我有两个类,ClassOne
和ClassTwo
,它们更新公共字段,即,
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
}
在任何给定的时间,只有一个类及其关联的线程在运行,即应用程序在运行时检测数据源并使用
data
或ClassOne
。我想在一个名为ClassTwo
的单独类中解析数据,但有点困惑如何设置它以便ParseMyData
可以从ParseMyData
或data
访问ClassOne
。我正在尝试使用泛型,比如:
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
}
所以我的问题是如何从类中访问字段
ClassTwo
?我需要使用反射吗?反射是唯一和最好的方法吗?新的泛型和反映,所以思想和指针非常赞赏。
最佳答案
使用返回DataProvider
字段的方法getData()
创建接口data
。
然后在你的课堂上,你将改为写作。
public class ParseMyData<T extends DataProvider> {
T classOneOrClassTwo;
ParseMyData(T t) {
classOneOrClassTwo = t;
}
public void parseIt() {
classOneOrClassTwo.getData();
}
或者,您也可以使用您的版本,但首先执行
ParseMyData<T>
检查,然后转换为ParseMyData<T extends DataProvider>
或instanceof
。但我建议你选择第一个。