锁定老帖子 主题:原来Java代码还能这么写?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-08-30
private Map initData = new HashMap();{ { put("foo","blah");; put("bar","blah");; } }; 真是每天都有新发现呀 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-08-30
我想这个是匿名内部类的语法吧, 其实得到的是一个 HashMap 的子类, 不信你编译出来看看是不是有一个内部类.
|
|
返回顶楼 | |
发表时间:2004-08-30
果然是一个内部匿名类
good good study, day day up. |
|
返回顶楼 | |
发表时间:2004-08-30
我最近在研究think in java 楼主也去看看吧,不然以后发这种帖子多丢人啊。我觉得内部类的确有点东西,不过不是有很多人习惯使用^_^。
说说搂主提到的东西。 class 我的补充 { private Map initData = new HashMap(){ { put("foo","blah"); put("bar","blah"); } void toString() {System.ou.println("匿名内部类没有构造函数^_^");} }; } 楼主写的东西因为pivate所以一定是一个类的属性,所以我补充了一下,比较好看,关键是在new后面,这里HashMap是个接口, new+ 后面一大堆的意思是,有一个类继承自接口HashMap(类的内容是花口号中的东西),然后生成了这个类的一个实例,上溯到HashMap这个接口。 匿名类里面的put方法实际上是一个类内的快,在初始化时调用。表达能力有限啊随便说说大家别骂我。 |
|
返回顶楼 | |
发表时间:2004-08-30
这个帖子有什么丢人的? 偶以前不知道Java代码可以这样写, 最近在复习thinking in java, 觉得自己发现新大陆当然要大声地喊出来了.
|
|
返回顶楼 | |
发表时间:2004-08-30
很希望大家能借这个帖子发表一下对内部类的看法,因为我的确有很多疑惑,很想和大家交流一下,现在在天津混,也做不到什么好项目就开始研究基础知识,发现很多地方的东西,还不是很清楚^_^,大家也一样吧,东西不能逃,要一个一个的解决,我有开始罗索了^_^。
从基本的内部类说说,类时可以多层嵌套的,例如: class 最外曾类 { class a { class b { class c { class d { // 不知道能有多少层??:) } } } class kk { int mygirl = 0; } void med0() { class { // 我考这里都行啊,真的行!! } } } |
|
返回顶楼 | |
发表时间:2004-08-30
楼主我说话就是这个样子的^_^,别计较了^_^,我们还是说正事好了,这个我写的缩进怎么都被过滤了哎。
还有特别的东西呢: class sample { interface { void itfmed(); // 我考借口都可以使用内部的呢! } } class test extends sample.interface { void itfmed() { ; } } 内部借口啊,看到没我研究出来的,没有看过这方面的书。 |
|
返回顶楼 | |
发表时间:2004-08-30
内部借口是可以被继承的,但是内部类是不可以被继承的,我说是在主类的外面(主类是我乱叫的),这可能是内部类的原则吧,把不想公开的东西写在内部。如果想提供给外部,继承一个借口,然后返回的是这个借口^_^。
class sample { class innercls { // 烂的写内容了 } protected class innercls2 { // 可以用protected修饰! } private clas innercls3{ // 可以用private修饰! } } /* class out extends sample.innercls{ //这样写会报错!! } */ |
|
返回顶楼 | |
发表时间:2004-08-30
哦,没有人喜欢研究基础的东西哦,^_^那我就自言自语好了,真是伤心啊,
我想问问内部类都规定不能被外面的类继承了,为什么还能用protected,private来修饰,他们起什么作用? |
|
返回顶楼 | |
发表时间:2004-08-31
别急,有兴趣和你讨论的人,可能还在睡觉。等他(她)醒来以后会看见的。
另外,你的代码可以加上【code】【/code】标记,这样显示起来会很好看的。【】要换成[]。 |
|
返回顶楼 | |