我有
public abstract class A
{
public abstract A get();
}
和
public abstract class B
{
public abstract void save(A a);
}
一堆不同的类扩展了这两个类。
它们通常配对在一起。所以如果我有C,D类
然后,C将扩展A,D将扩展B,D的保存功能将期望C起作用。
我有控制器E
public class E
{
List<B> list;
public void save(A a)
{
// how do I choose correct pair from list?
}
}
在该控制器中,我有一个扩展B的类的列表。
E中有一个保存函数,该函数接收扩展类A作为参数。
如何遍历列表中的所有元素并找出哪个类属于该对中的哪个?
感谢任何人的帮助,我正在尝试学习复杂的抽象类以及如何将它们联系起来。
编辑:如果我使用的实例,那么我将在100个类中有一个巨大的if语句
假设我有100个扩展A类的类和100个扩展B类的类。
如上所述,它们是配对在一起的。
因此作进一步的澄清。
public class D extends B
{
public void save(A a)
{
C c = (C)a.get();
// proceed saving using c
}
}
如何避免对所有这些类的实例进行检查,并且知道如何将它们配对?有没有更好的办法?
EDIT2:Pshemo的回答很好,但是我还有最后一个问题要解决。
在E类中,我具有保存函数以接收A类
我怎么知道A链接到哪个类?
如果类A是C的实例,我怎么知道要在列表中搜索D的实例并调用该类的save函数?
最佳答案
我不确定这是否是您所需要的,但看起来您可能想将B
类更改为类似的内容
abstract class B<T extends A> {
public abstract void save(T a);
}
所以现在扩展它时,您可以指定
T
代表哪个类,例如class D extends B<C> {
public void save(C a) {}
}
关于java - 一类在另一类中的实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25510157/