gpt4 book ai didi

java - 在运行时更改类结构或将其放入匿名类中

转载 作者:行者123 更新时间:2023-12-01 12:56:43 24 4
gpt4 key购买 nike

我有

class A
{
String a;
String b;
//..getters, setters
}

现在我有ArrayList<? extends Object> resultData持有 A 类和其他一些类的对象。基本上我需要这个列表“resultData”在其他一些 API 中生成 Json 文件。

现在我的问题是,在将 A 类对象添加到列表中并且某些条件(X)为真时,我需要一个修改后的 A 类对象(或任何其他匿名类对象),例如:

class A
{
String a;
//..getters, setters
}

这是 A 类的一个特定对象不应该有字段 String b (在批评之前,我这样做是因为我需要为我的特定 JSon 格式修改这样的对象,并且我不这样做想要定义一个仅使用一次的新类定义)

我的最后一个选择是创建这样的匿名类:(然后将其添加到我的列表中)

Object ob = new Object{
String b;
//..getters, setters
}

另外,请。建议创建具有所需结构的匿名类的任何其他方法。

最佳答案

Java 并不意味着在运行时更改类或创建新类。

这是可能的,需要付出很多努力,比如使用像 BCEL( http://commons.apache.org/proper/commons-bcel/ ) 这样的字节码库动态生成 java 字节码,甚至生成 .java文件并运行 javac生成字节码。

您可以简单地使用像 Map<String,Object> 这样的 HashMap 。 “模拟”一个可以接收任意字段的对象。如果您确实需要完全可配置的类,我会这样做。当然,您不会为每个属性都有很好的 getter 和 setter。

但是为什么你需要好的 setter/好的类呢?由于类的结构是在运行时确定的,因此您无法编写依赖于该类的代码,因为您不知道它会是什么样子。

关于java - 在运行时更改类结构或将其放入匿名类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23823551/

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