论坛首页 Java版

传奇代码大鉴赏!

浏览 12904 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2005-02-19
这是我们公司意大利程序员的代码。我敢担保这个坛子上90%的Java大牛,都没有见过这种代码。

[code:1]Exmaple 1:

new SomethingA().new somethingB();

Example 2:

SomethingA.this.someMethod();[/code:1]

可以告诉大家,这样的代码是能够编译通过的。
   
最后更新时间:2005-02-19
不觉得很奇怪亚
第一个是创建一个inner class的实例吧
第二个没看出来哪里奇怪,就是费二遍事儿吧?呵呵
都是很符合语法的东的说
   
0 请登录后投票
最后更新时间:2005-02-19
外国的程序员并不一定水平高,甚至编程的习惯,注释等都不一定好。
我们公司在美国也有程序员一起开发,我知道的一个韩国人水平不错,就是代码写得乱,注释看上去更是可有可无,经常是从别的地方拷过来就当注释了。
   
0 请登录后投票
最后更新时间:2005-02-19
第一个没看明白
   
0 请登录后投票
最后更新时间:2005-02-19
只要有基础知识就能看懂吧,只是很别扭罢了──不过关键不是代码的问题,很可能是类的设计不合理,所以在某些特殊场合用一下。
monk 写道
这是我们公司意大利程序员的代码。我敢担保这个坛子上90%的Java大牛,都没有见过这种代码。

[code:1]Exmaple 1:

new SomethingA().new somethingB();

Example 2:

SomethingA.this.someMethod();[/code:1]

可以告诉大家,这样的代码是能够编译通过的。
   
0 请登录后投票
最后更新时间:2005-02-20
我还以为是哪位老大整到了《传奇》的源代码呢。

很多时候,不过是五十步笑百步罢了。
   
0 请登录后投票
最后更新时间:2005-02-20
这两种偶都用过,场景似乎都跟内部类有关系,某些情况下不这么写还真不行。
   
0 请登录后投票
最后更新时间:2005-02-21
不如我们讨论讨论内部类的用法吧,我用内部类通常是为了封装,外部类提供一致的接口,内部类完成逻辑,有些别人设计不合理的地方就用内部类隔离(比如一定要extend的时候,就用内部类extend,外部类就成了facade了)。
还有一次用到内部类是为了实现安全的枚举类型。
这些作法并不一定正确,不过拿出来当作anti-pattern批判也好阿。
其它人是怎么用的,有没有什么情况必须要用到楼主说的方式?
   
0 请登录后投票
最后更新时间: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对此语法还有提示),但我见到这还是有点新鲜,因为它实在是累赘。
   
0 请登录后投票
最后更新时间:2005-02-21
顺便提一句,
[code:1]new SomethingA().new somethingB();
SomethingA.this.someMethod();[/code:1]

这个论坛的代码显示功能并没有对怪异部分的代码做到关键字高亮。我猜论坛的设计者也没料到有人会这样写代码。
   
0 请登录后投票
论坛首页 Java版

跳转论坛:
JavaEye推荐