我有一个域类,它有很多子类,如下所示( B 是接口类型, B1 和 B2 )实现 B 接口。
正如您在我的主课中看到的那样,它需要转换 (B1 b1 = (B1) a.getB();) 并且我们知道它可以是 B1 或 B2,所以据我所知应该没问题。
我遇到的问题是类型可以增长很多,使用 A 的人需要设置更多条件来检查 B 的实例并访问 B1 或 B2 的特定值……有什么方法可以跳过这个转换,所以它可以未来减少很多条件
public class TestMain
{
public static void main(String[] args)
{
A a = new A();
//this can be B1 or B2
B1 b1 = (B1) a.getB();
}
}
public class A
{
private B b;
protected B getB()
{
return b;
}
protected void setB(B b)
{
this.b = b;
}
}
public interface B
{
void test();
}
public class B1 implements B
{
@Override
public void test()
{
// TODO Auto-generated method stub
}
}
public class B2 implements B
{
@Override
public void test()
{
// TODO Auto-generated method stub
}
}