java - 如何在Java中使用通用接口获取实现类中的方法
问题描述
我有一个通用接口和一个实现它的类:
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)
你有什么方便的方法来实现它吗?
解决方案
过滤掉桥接方法:
Method[] methods = Arrays.stream(StringImpl.class.getDeclaredMethods())
.filter(m -> !m.isBridge())
.toArray(Method[]::new);
推荐阅读
- python - 如何将随机数与列表中的数字匹配
- http - 在服务 http 请求时处理服务器关闭
- android - 接口作为 Kotlin 中的属性
- c# - 如何修复“在 C# 中用一些空间连续移动文本(标签)”?
- hbase - zookeeper 启动变慢,Hbase 启动失败
- ios - 如果设置了 contentInset,则在长按选择文本时 WKWebView 出现奇怪的滚动行为
- javascript - RXjs,链接长轮询请求
- php - laravel whereMonth 在集合中不起作用
- angularjs - 在没有 SSRS 身份验证标头的 React.js 或 Angular js 中实现 SSRS 报告
- performance - 如何实现部分资源休息 api?