|
锁定老贴子 主题:传奇代码大鉴赏!
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2005-02-19
这是我们公司意大利程序员的代码。我敢担保这个坛子上90%的Java大牛,都没有见过这种代码。
[code:1]Exmaple 1: new SomethingA().new somethingB(); Example 2: SomethingA.this.someMethod();[/code:1] 可以告诉大家,这样的代码是能够编译通过的。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2005-02-19
不觉得很奇怪亚
第一个是创建一个inner class的实例吧 第二个没看出来哪里奇怪,就是费二遍事儿吧?呵呵 都是很符合语法的东的说 |
|
| 返回顶楼 | |
|
最后更新时间:2005-02-19
外国的程序员并不一定水平高,甚至编程的习惯,注释等都不一定好。
我们公司在美国也有程序员一起开发,我知道的一个韩国人水平不错,就是代码写得乱,注释看上去更是可有可无,经常是从别的地方拷过来就当注释了。 |
|
| 返回顶楼 | |
|
最后更新时间:2005-02-19
第一个没看明白
|
|
| 返回顶楼 | |
|
最后更新时间:2005-02-19
只要有基础知识就能看懂吧,只是很别扭罢了──不过关键不是代码的问题,很可能是类的设计不合理,所以在某些特殊场合用一下。
monk 写道 这是我们公司意大利程序员的代码。我敢担保这个坛子上90%的Java大牛,都没有见过这种代码。
[code:1]Exmaple 1: new SomethingA().new somethingB(); Example 2: SomethingA.this.someMethod();[/code:1] 可以告诉大家,这样的代码是能够编译通过的。 |
|
| 返回顶楼 | |
|
最后更新时间:2005-02-20
我还以为是哪位老大整到了《传奇》的源代码呢。
很多时候,不过是五十步笑百步罢了。 |
|
| 返回顶楼 | |
|
最后更新时间:2005-02-20
这两种偶都用过,场景似乎都跟内部类有关系,某些情况下不这么写还真不行。
|
|
| 返回顶楼 | |
|
最后更新时间:2005-02-21
不如我们讨论讨论内部类的用法吧,我用内部类通常是为了封装,外部类提供一致的接口,内部类完成逻辑,有些别人设计不合理的地方就用内部类隔离(比如一定要extend的时候,就用内部类extend,外部类就成了facade了)。
还有一次用到内部类是为了实现安全的枚举类型。 这些作法并不一定正确,不过拿出来当作anti-pattern批判也好阿。 其它人是怎么用的,有没有什么情况必须要用到楼主说的方式? |
|
| 返回顶楼 | |
|
最后更新时间:2005-02-21
要想这样的代码编译通过,
[code:1]new SomethingA().new somethingB();[/code:1] 那class就要这样写: 引用 public class SomethingA { public class SomethingB { } } 这是非静态内部类。通常非静态内部类的作用是用来实现临时的监听器(相当于用C++中的函数指针来call back),或者对被引用的其他类做临时性地继承修改。这就意味着非静态内部类的作用是用于内部实现,根据OO起码的封装性的原则是不应该暴露的; 释放出来供其他外部类调用那更是骇人听闻。见过这种代码也许不奇怪,但若见过这种代码还认为它是理所当然的,那你就要检讨自己的编程水准了。 引用 SomethingA.this.someMethod();
这段不如上一段weird,(Eclipse对此语法还有提示),但我见到这还是有点新鲜,因为它实在是累赘。 |
|
| 返回顶楼 | |
|
最后更新时间:2005-02-21
顺便提一句,
[code:1]new SomethingA().new somethingB(); SomethingA.this.someMethod();[/code:1] 这个论坛的代码显示功能并没有对怪异部分的代码做到关键字高亮。我猜论坛的设计者也没料到有人会这样写代码。 |
|
| 返回顶楼 | |










