我不确定我是否正确地表达了标题,但希望我的伪代码几乎是自我解释的。我不知道如何测试SomeType
对象是否是MyClass(或后代)的实例。怎么能实现这一目标?
public class MyClass<SomeType>
{
//...
public void a(SomeType st)
{
if (SomeType extendsOrIs MyClass<?>) // Need help with this line
{
MyClass<?> mc = (MyClass<?>) st;
mc.b();
}
}
public void b()
{
//...
}
}
我发现的一个解决方案是执行此操作,但对象可能为空,在这种情况下,我仍然想知道SomeType
是否等同于{ {1}}为了调用未来对象的方法:
MyClass<?>
答案 0 :(得分:0)
null的第一个不是任何类的实例。您可以在MyClass
中创建最终方法,例如: -
public class MyClass<SomeType>
{
//...
public void a(SomeType st)
{
if (SomeType extendsOrIs MyClass<?>) // Need help with this line
{
MyClass<?> mc = (MyClass<?>) st;
mc.b();
}
}
public final boolean isSubClass()
{
if(this.getClass()!=MyClass.class){
return true;
}
return false;
}
public void a(SomeType st)
{
if (st instanceof MyClass<?>)
{
MyClass<?> mc = (MyClass<?>) st;
mc.isSubClass();
}
}