0

我看到这里讨论了很多反射问题。不幸的是,我找不到任何解决我的问题的方法:

我有一个抽象类,它为子类处理很多东西

public abstract class A{
    public static <T extends A> create(){
        // some factory stuff here
    }
    public static List<....> createMore(){ /// some stuff here}
}

A 类位于主项目的包含库中。现在我想将 A 的方法用于 A 的子类:

 public class A1 extends A {...}

并使用它:

   A1 mySubclass = A1.create();
   ArrayList<A1> listOfSubclass= A1.createMore();

这有可能吗?

4

1 回答 1

1

createMore是可能的:

public static <T extends A> List<T> createMore(){
    return new ArrayList<T>();
}

create如果您返回,则只有(正确)可能null

public static <T extends A> T create(){
    return null;
}

没有任何输入,该函数无法决定返回什么。它必须匹配调用者作用域在编译时想要的任何类型,而不知道那是什么。

于 2013-02-03T21:57:28.627 回答