我有两个类,ClassOneClassTwo,它们更新公共字段,即,

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

}

在任何给定的时间,只有一个类及其关联的线程在运行,即应用程序在运行时检测数据源并使用dataClassOne。我想在一个名为ClassTwo的单独类中解析数据,但有点困惑如何设置它以便ParseMyData可以从ParseMyDatadata访问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。但我建议你选择第一个。

10-06 06:33