[英]Accessing Field Variable from Generic Object
我有两个类, ClassOne
和ClassTwo
,它们更新公共字段data
即
public class ClassOne {
public byte[] data = new byte[10];
// Thread that updates data
}
和
public class ClassTwo {
public byte[] data = new byte[10];
// Thread that updates data
}
在任何给定时间,只有一个类及其相关线程正在运行,即,该应用在运行时检测到数据源并使用ClassOne
或ClassTwo
。 我想在一个名为ParseMyData
的单独类中解析数据,但是对于设置ParseMyData
的最佳方法有些困惑,因此ParseMyData
可以从ClassOne
或ClassTwo
访问data
。
我目前正在尝试使用泛型,例如:
public class ParseMyData<T> {
T classOneOrClassTwo;
ParseMyData(T t) {
classOneOrClassTwo = t;
}
public void parseIt() {
// Need to access data from either ClassOne or ClassTwo here, something like:
classOneOrClassTwo.data; // this obviously doesn't work
}
所以我的问题是如何从ParseMyData
类中访问字段data
? 我必须使用反射吗? 反射是唯一,最佳的使用方法吗?
泛型和反射的新手,所以思想和指针大为赞赏。
使用方法getData()
创建一个接口DataProvider
,该方法返回您的data
字段。 然后在类ParseMyData<T>
您将编写ParseMyData<T extends DataProvider>
。
public class ParseMyData<T extends DataProvider> {
T classOneOrClassTwo;
ParseMyData(T t) {
classOneOrClassTwo = t;
}
public void parseIt() {
classOneOrClassTwo.getData();
}
或者,您也可以使用您的版本,但先执行instanceof
检查,然后将其ClassOne
转换为ClassOne
或ClassTwo
。 但我建议您选择第一个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.