如何使用Java中的通用接口在implement类中获取方法

如何使用Java中的通用接口在implement类中获取方法,java,generics,reflection,interface,Java,Generics,Reflection,Interface,我有一个通用接口和一个实现它的类: import java.util.Arrays; interface Interface<T> { void doSomething(T element); } class StringImpl implements Interface<String> { @Override public void doSomething(String element) { System.out.printl

我有一个通用接口和一个实现它的类:

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)
你有什么简便的方法来实现它吗?

过滤掉:


我正要回答
!m、 isSynthetic
但这更好。@Mena是的,这更好,不是所有的合成方法都是bridge@Andrew顺便说一句,编译器将在两个地方创建桥接方法-协变返回类型和generics@Andrew我已经检查了接口(和抽象类)中方法的
修饰符,即0x1041=>[synthetic,volatile,public]。但在我看来,0x1401=>[synthetic,abstract,public]更好。所以我想知道为什么
volatile
而不是
abstract
。@Eugene实际上,这意味着
Bridge
volatile
都是0x40…我明白了!
public void com.ra.StringImpl.doSomething(java.lang.String)
Method[] methods = Arrays.stream(StringImpl.class.getDeclaredMethods())
                         .filter(m -> !m.isBridge())
                         .toArray(Method[]::new);