有什么好方法可以将方法声明为“返回此”?

| 像这样:
class C {

    typeof(this) foo() { return this; }

}
好吧,我知道在Java 6中是不可能的,因此,我很高兴听到我是否可以在Java 7中做到这一点。 编辑 这对于链接方法调用很有用,并避免创建临时局部变量,如下所示:
class Entity {

    typeof(this) refresh();

    typeof(this) clone();

    typeof(this) detach();

}

class FooEntity extends Entity {

    @Override
    typeof(this) detach() {
        fooLink21.removeRef(this); 
        bar39.detach(); 
        return this; 
    }

    void doSomeInteresting() {}
}

fooEntity.clone().detach().doSomeInteresting();
还有更多。 我认为将这个功能添加到编译器应该很容易,也许我应该侵入openjdk或gcj? 顺便说一句,我从未成功重建过openjdk。     
已邀请:
如果您要使用泛型,则可能看起来像这样:
class Parent<C extends Parent> {

   public C getMe (){
      return this;
   }
}

class Sub extends Parent<Sub> { }
它可能有用,但是我不建议编写这样的代码。设计不好...     
我不认为在Java 6或Java 7中有任何方法可以做到这一点。添加起来并不容易-我认为返回类型将是所谓的“依赖类型”。 ,这是来自比Java目前复杂得多的类型系统的东西。 据我所知,Gressie关于将类型参数添加到基类的答案是接近您想要的唯一方法。 但是,如果准备使用辅助函数,则可以在类上没有类型参数的情况下执行此操作:
abstract class Entity {
    public static <T extends Entity> T detach(T entity) {
        entity.detach();
        return entity;
    }
    protected abstract void detach();
}
然后您可以说:
import static Entity.detach;

detach(fooEntity).doSomeInteresting();
不过,这很笨拙。     
我对Java不太了解(主要使用C#/ C ++的二年级SD学生),但您可能希望了解泛型。如果它们是我认为与C ++,C#有关的东西,则它们就像模板,您可以在其中编写返回模板类型的方法。 http://en.wikipedia.org/wiki/Generics_in_Java     
从外观上看,为什么不使用构造函数?看起来您可能正在问如何返回方法?如果是这样的话: 您可以使用Java返回方法。我强烈建议您不要这样做,并考虑替代此做法。看看java.lang.reflect;提供对方法,字段和构造函数的访问。 Java不是“一流的”处理一流的功能。如果您决定这样做,请准备好很多catch语句...     

要回复问题请先登录注册