Конвертировать объект в интерфейс и обратно в Java - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть интерфейс A, у которого есть метод:

public interface A { public double doSth(); }

и класс B, который реализует A и имеет какой-то другой метод:

    class B implements A {
        private String name;

        @Override
        public double doSth();//returns the lenght of the name

        public void getName(){}
}

В основном классе яиметь список массивов объектов A-типа и метод, который ищет объект из списка массивов, который имеет наибольшее значение doSth () и возвращает ссылку на этот объект.

public class Main {

    public static void main(String[] args) {
         ArrayList<A> array = new ArrayList<>();

}

public static A a(ArrayList<A> array){
 A aObject = null;
    double temp = 0;
    for (A bObject: array){
        if(bObject.doSth()>temp){
            temp = aObject.doSth();
            aObject = bObject;
        }
    }
    return aObject;

}

Что мне нужно сделать, это использовать этот метод в main, а затем распечатать имя объекта, который был возвращен как объект A-типа методом. Можно ли это сделать? Есть ли возможность преобразовать объект A обратно в класс B?

1 Ответ

1 голос
/ 08 ноября 2019

Да. Используя instanceof, вы можете проверить, к какому классу относится ваш класс interface, а затем привести его к этому классу.

Например:

List<A> myList = getMyList();

A foo= a(myList);

if (foo instanceof B) {
  B bar = (B)foo;
  System.out.println(bar.getName());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...