【发布时间】:2013-06-08 14:00:18
【问题描述】:
我有这个界面:
interface MyInt<T> {
public void foo(T t);
}
还有这些类:
class MyString implements MyInt<String> {
@Override
public void foo(String t) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
class MyDouble implements MyInt<Double> {
@Override
public void foo(Double t) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
现在我想测试一个类是否不仅实现了MyInt(我可以做到),而且该类是否实现了MyInt<String>,到目前为止我的代码:
Class<MyInt> c = MyInt.class;
Class c0 = MyString.class;
Class c1 = MyDouble.class;
System.out.println(c.isAssignableFrom(c0)); //true
System.out.println(c.isAssignableFrom(c1)); //true
每次尝试添加字符串“sublass”(甚至不知道 T 的正确名称)都会导致编译错误。有什么办法吗?
【问题讨论】:
-
您应该能够向 MyInt 添加一个 getter,它返回 T 的类。
public Class getImplementedClass() { return T.getClass(); } -
@BobDalgleish
MyInt是一个接口。您不能将方法实现添加到接口。您需要在每个实现类中都这样做,这使得整个方法毫无用处。
标签: java class interface polymorphism instanceof