2 回答
TA贡献1876条经验 获得超6个赞
可能这不是您正在寻找的,但您可以尝试一下:
创建一个abstract实现所有内容的泛型类:
public abstract class MyClass<T>
{
AnotherClass<T> another;
OtherClass<T> other;
// Add any code needed
}
然后为两个基类创建 2 个泛型类。
如果所有代码都可以在抽象类中实现,则这些类可能为空:
public class MyT1Class<T extends T_1> extends MyClass<T>
{
}
public class MyT2Class<T extends T_2> extends MyClass<T>
{
}
TA贡献1799条经验 获得超6个赞
我知道这不是一个很好的答案,但我不能把它作为对问题的评论。
您可以通过尝试以下操作在运行时检查类型:
public class MyClass<T>
{
// This factory-method creates an instance of the class if the correct type is passed
// It throws a RuntimeException if not.
public static <T> MyClass<T> getInstance(Class<T> type)
{
if (T_1.class.isAssignableFrom(type) || T_2.class.isAssignableFrom(type))
return (new MyClass<T>());
else
throw new RuntimeException("Cannot create instance of MyClass<" + type.getName() + ">");
}
...
}
然后
class T_3 extends T_2
{
}
....
MyClass<T_3> test_1;
test_1 = MyClass.getInstance(T_3.class); // This will succeed
MyClass<String> test_2;
test_2 = MyClass.getInstance(String.class); // Fails
添加回答
举报