Как просто получить метод в классе реализации с универсальным интерфейсом в Java - PullRequest
0 голосов
/ 14 мая 2018

У меня есть универсальный интерфейс и класс, реализующий его:

import java.util.Arrays;

interface Interface<T> {
    void doSomething(T element);
}

class StringImpl implements Interface<String> {
    @Override
    public void doSomething(String element) {
        System.out.println("StringImpl: doSomething");
    }
}

public class Main {
    public static void main(String... args) {
        System.out.println(Arrays.toString(StringImpl.class.getDeclaredMethods()));
    }
}

И результат

[public void com.ra.StringImpl.doSomething(java.lang.String), 
public void com.ra.StringImpl.doSomething(java.lang.Object)]

Но на самом деле, я просто хочу версию реализации:

public void com.ra.StringImpl.doSomething(java.lang.String)

У вас есть какой-нибудь удобный способ добиться этого?

1 Ответ

0 голосов
/ 14 мая 2018

Отфильтровать Методы моста :

Method[] methods = Arrays.stream(StringImpl.class.getDeclaredMethods())
                         .filter(m -> !m.isBridge())
                         .toArray(Method[]::new);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...