`
googya
  • 浏览: 140602 次
  • 性别: Icon_minigender_1
  • 来自: 汉川
社区版块
存档分类
最新评论

Java的内部类与Ruby的内部类的区别

阅读更多
  今天经过night-stalker的提醒,突然意识到Ruby的内部类和Java的内部类存在不少区别。其中我发现最大的区别是:
    在Java中,内部类方法可以访问其自身的数据字段,也能够访问创建它的外部类的数据字段。在Java中内部类对象要有一个银隐含引用,指向创建它的对象。
    而在Ruby中,恰好相反。外部类的方法可以访问内部类的字段,但是反过来却不行。
    若单独的使用,只要熟悉相应的语法规则,不会出现问题。但是要在JRuby中的时候,就有可能出现问题,因为有2中截然不同的方式实现内部类,这时可能会出现乱子!
   


module MyPackage
	module InnerPacage
		class TheWorker
			def initialize(foo)
				@foo=WorkHelper.new(foo)
			end

			def foo
				@foo.caclulate
			end
			class WorkHelper
				def initialize(value)
					@value=value
				end
				def caclulate
					@value**2
				end
			end
		end
	end
end
puts MyPackage::InnerPacage::TheWorker.new(10).foo
		


class ButtonPanel extends JPanel{

	public Button(){
		JButton yellowbutton=new JButton("yellow");
		add(yellowbutton);
		ColorAction yellowAction new ColorAction(Color.YELLOW);
		yellowbutton.addActionListener(yellowAction);
	}

	private class ColorAction implements ActionListener
	{
		public ColorAction(Color c){
			backcolor=c;
		}

		public void actionPerformed(Action event){
			setBackground(backcolor);
		}

		private Color backcolor;
	}
}
 
分享到:
评论

相关推荐

    疯狂JAVA讲义

    学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类? 211 6.7.4 局部内部类 211 6.7.5 匿名内部类 212 6.7.6 闭包(Closure)和回调 215 6.8 ...

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    java-dotenv,dotenv是一个从.env文件加载环境变量的模块.zip

    Java和Kotlin的Ruby DoTunv项目的一个端口。从.env文件加载环境变量。

    Java 版的 Ruby 解释器 JRuby 1.7.14 发布

    JRuby 1.7 主要是为了兼容 Ruby 1.9.3 版本,改进记录如下: 解决了 30 个 issues 修复了 Jar 文件源潜在的内存泄漏问题 因为在 Rails 应用启动比较慢,所以默认禁用 invokedynamic load/require 内部重构和简化 ...

    Ruby语言中的String深入理解

    比如 代码如下: str1=”abc” str2=”abc” 在java中,对于字面量的字符串,jvm内部维持一张表,因此如果在java中,str1和str2是同一个String对象。而在Ruby中, str1和str2是完全不同的对象。同样,在java中对于...

    使用Java实现内部领域特定语言

    火龙果软件工程技术中心 简介领域特定语言(DSL)通常被定义为一种特别针对某类特殊问题的计算机语言,它不打算解决其领域外的问题。对于DSL的正式研究已经持续很多年,直到最近,在程序员试图采用最易读并且简炼的...

    javaSE代码实例

    15.1.5 内部类与外部类的预定义对象引用this 327 15.2 局部内部类 328 15.2.1 局部内部类的定义及创建 328 15.2.2 局部变量与局部内部类 329 15.2.3 静态方法中的局部内部类 331 15.3 静态内部类 332 ...

    dotenv-java:DoDotenv是一个无深度的纯Java模块,可从.env文件加载环境变量

    :old_key: dotenv-java Ruby dotenv项目的无依赖性纯Java端口。 从.env文件加载环境变量。 dotenv-java还为流行的库提供了支持。 为什么要选择tentenv? 在环境中存储配置是应用程序的宗旨之一。 应该在部署环境之间...

    java8stream源码-java-8-language-demo:基于VenkatSubramaniam在NoFluff,JustStuf

    以前Java只提供了外部迭代器,现在我们也会有内部迭代器 外部例子:我们熟悉这个 elements = [ 1 , 2 , 3 , 4 , 5 ]; for i in elements : print i 内部示例:没有那么多(除非你写了很多 ruby​​) beatles = [ '...

    每日优鲜java笔试题-domtest:回购

    每日优鲜java笔试题Ruby书签 这是一个精选的基本 Ruby 和 Ruby on Rails 资源集合。 该项目旨在维护对初学者和高级 Web 开发人员同样有用的结构良好的参考。 ★ 代表编辑选择。 该列表不打算包括任何与 Ruby 编程...

    ruby 流程控制 方法

    正如我们所见的,这和C,Java的switch相当接近,但更强大. ruby> i=8 ruby> case i | when 1, 2..5 | print “1..5\n” | when 6..10 | print “6..10\n” | end 6..10 nil 2..5表示2到5之间的一个范围....

    2022自动化测试面试宝典

    根据公司内部题和培训机构老师整理的这些年来高频的自动化测试相关面试题。...并且是跨平台跨语言,支持 MacOS、Linux 和 Windows,也支持 Java、Python、Ruby 和 PHP 等。也是当前最流行最常用的自动化框架。

    Ruby中Block和迭代器的使用讲解

    可以用Block实现回调(但它比Java的匿名内部(anonymous inner)类更简单),传递一组代码(但它远比c的函数指针灵活),以及实现迭代器。 Block只是在花括号或者do…end之间的一组代码。 {puts Hello} #this is a ...

    高级java工程师笔试题-Int-Q-A:内部质量保证

    高级java工程师笔试题精彩访谈 技术面试问题列表的精选列表。 如果你想贡献,请阅读 或 。 单击此按钮有助于为 Awesome 项目提供资金 目录 编程语言/框架/平台 安卓 . AngularJS 角 主干JS C++ C C# 。网 Clojure ...

    PDF文件JAVA去水印源码-PDF-Converter-Services-Online:使用基于REST的云服务转换、合并、水印、安全和OC

    PDF文件JAVA去水印源码Muhimbi PDF Converter 在线服务 关于 这是一项基于 REST 的服务,可以轻松地将文档转换、合并、水印、保护和光学字符识别 ...适用于PHP、Ruby、Python、Java、C#、Curl、JavaS

    Scala程序设计(第2版)

    20.4 内部DSL与外部DSL:最后的思考 413 20.5 本章回顾与下一章提要 413 第21章 Scala工具和库 414 21.1 命令行工具 414 21.1.1 命令行工具:scalac 414 21.1.2 Scala命令行工具 418 21.1.3 ...

    jarsurgeon:无需源代码即可检测和重建Java程序-java source code

    与大多数Java反编译器输出不同,即使对于复杂的应用程序,Krakatau / jarsurgeon使用的人类可读字节码文件通常也可以转换回功能齐全的Java二进制文件。 显示中间值,函数参数和其他内部数据可以显着加快未记录代码...

Global site tag (gtag.js) - Google Analytics