У меня естьInstance одного класса в другой класс
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.
Существует функция сохранения в Е, получает расширенный класс А в качестве аргумента.
Как мне пройти через все элементы в списке и выяснить, какой класс принадлежит к тому, что в паре?
Спасибо всем за помощь, я пытаюсь изучить сложные абстрактные классы и как их связать.
EDIT: Если я использую экземпляр, то у меня будет огромная, если заявления в 100 классах
Скажем, у меня есть 100 классов, расширяющих класс А и 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 в списке и вызова функции сохранения классов?
Быстрый грязный способ: использовать 'instanceof'. Правильный способ: не используйте для этого наследование. –
Я не уверен в вашем дизайне. Во всяком случае, возможно, пытаясь использовать и посмотреть, будет ли ваш экземпляр лишен вашего ожидаемого типа, вы скажете, какой тип он есть. –
Я думаю, вам нужно прояснить это несколько.Я не совсем понимаю, что вы подразумеваете под «выяснить, к какому классу принадлежит тот, который в паре». Я думаю, вы должны добавить код, который демонстрирует то, что вы пытаетесь выполнить, и просто сделать что-то для тех частей, где вы не знаете, как писать правильный Java-код. – ajb