java - 如何使用通用方法查找对象的字段?
问题描述
我有一个带有公共“x”字段的 Cube 对象。我的 Cube 类中有一个 toString 方法,它打印出 x,y,z 字段,但是当我直接访问它时,出现错误 where: field cannot be resolved or is not a field。
public <T> void setPosition(T object){
System.out.println(object);
System.out.println(object.x); // error here
}
解决方案
我建议定义一个接口来声明多种不同类型将公开的方法。就像是:
public interface ValueProducer {
public String getValue();
}
然后,您的Cube
类型将如下所示:
public <T extends ValueProducer> void setPosition (T obj) {
System.out.println(obj);
System.out.println(obj.getValue());
}
然后,您希望使用此方法的任何类型只需要实现接口ValueProducer
,并且仍然可以扩展或实现适合其用例的任何其他类型。
或者,您可以完全省略泛型,只obj
作为ValueProducer
.
推荐阅读
- java - Camera2 Api 自动闪光不起作用
- php - 如何将 HTML 和 php 与数据库连接?
- oracle - excel年龄分析
- performance - tar - -to-stdout 如何恢复stdout的内容并将其保存到带有原始目录的文件系统
- python-2.7 - 在Python中的if-else条件之后从两个列表中添加和减去
- sql - 在 Apex Oracle SQL 中创建表/序列/触发器 - ORA-00922 / ORA-00907 / ORA-00922
- php - 如何通过 2 个日期制作搜索栏?laravel 的开始日期和结束日期
- mysql - 使用三表mysql连接查询
- java - 从远程服务获取数据哪种方式更好
- android - Ionic Android 设备测试失败