java - Java中根据子类Type定义父类方法的泛型Type

标签 java generics subclassing

是否可以根据子类Type动态识别T为返回类型? 我想要如下内容:

public class Parent {
        public <T extends Parent> T foo() {
                return (T)this;
        }
}

public class Child extends Parent {
        public void childMethod() {
                System.out.println("childMethod called");
        }
}

然后调用:

Child child = new Child();
child.foo().childMethod();

没有像这样定义类型:

Child child = new Child();
child.foo().<Child>childMethod(); // compiles fine

提前致谢!

最佳答案

你想要这个:

public class Parent<T extends Parent<T>> {
    public T foo() {
        return (T)this;
    }
}

public class Child extends Parent<Child> {
    public void childMethod() {
        System.out.println("childMethod called");
    }
}

Child child = new Child();
child.foo().childMethod(); // compiles

关于java - Java中根据子类Type定义父类方法的泛型Type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20933583/

相关文章:

java - 如果对象没有在范围内进一步使用,Java7 是否可以智能地收集对象,尽管范围尚未完全结束

java - Kotlin 编译器或 Java 反编译器的奇怪行为

java - 查找数组中不存在空值的索引

c# - 将对象转换为通用列表

c++ - 十进制数字的区域设置感知编辑控件子类化(格式 [sign] [xxx...] [decimal separator] [yy...] )

python - numpy 子类的数组

java - 有什么办法可以让UDP丢包更低一些吗?

arrays - 具有通用2D数组的通用函数

c++ - 子类化后编辑控件无法获得焦点或设置文本

java - 在java中的通用类内部进行转换