Извлечение поля универсального класса - PullRequest
0 голосов
/ 18 сентября 2019

У меня есть несколько классов, которые все имеют одно общее поле.Я пишу метод, который занимается извлечением этого общего поля.Например:

class A{
    ..
    String blah;
    ..
}

class B{
    ..
    String blah;
    ..
}

Таким образом, вместо написания нескольких методов для каждого типа класса, это может быть достигнуто с помощью метода, который принимает универсальный класс?Я хочу иметь метод типа:

void func(List <T> data){
    for(T t:data){
        print t.blah()
    }
}

Я знаю, что приведенный выше код неверен, но как мы можем получить подобную функциональность?

1 Ответ

6 голосов
/ 18 сентября 2019

Сначала создайте интерфейс, который содержит все распространенные сигнатуры методов.

interface Blah {
    String getBlah();
}

Затем заставьте существующие классы A и B реализовать этот интерфейс.(Используйте @Override, чтобы убедиться, что вы правильно переопределяете метод.)

Наконец, в func возьмите список объектов, которые реализуют этот интерфейс.

void func(List<? extends Blah> data) {
    for (Blah t : data) {
        System.out.println(t.getBlah());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...