gpt4 book ai didi

java - 从通用对象访问字段变量

转载 作者:搜寻专家 更新时间:2023-11-01 08:02:13 24 4
gpt4 key购买 nike

我有两个类(class),ClassOneClassTwo , 更新公共(public)领域 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

}

在任何给定时间只有一个类及其关联的线程正在运行,即应用程序在运行时检测数据源并使用 ClassOneClassTwo .我想在一个名为 ParseMyData 的单独类中解析数据, 但对于设置它的最佳方法有点困惑 ParseMyData可以访问data来自 ClassOneClassTwo .

我目前正在尝试使用泛型来做到这一点,例如:

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
}

所以我的问题是如何访问字段 data来自类(class)内部ParseMyData ?我必须使用反射吗?反射是唯一且最好的方法吗?

泛型和反射的新手,非常感谢想法和指点。

最佳答案

创建接口(interface)DataProvider用一种方法 getData()这会返回您的 data field 。然后在你们类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先检查然后转换为 ClassOneClassTwo .但我建议您选择第一个选项。

关于java - 从通用对象访问字段变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19494817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com