0

我有

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

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

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

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

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

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

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

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

4

2 回答 2

1

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

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

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

但是你为什么需要好的二传手/一个好的班级呢?由于类的结构是在运行时确定的,因此您不能编写依赖于此类的代码,因为您不知道它的外观。

于 2014-05-23T07:50:21.587 回答
0

如果我没听错,你需要去掉字段以进行序列化,转换为 json 格式,如果我是对的,那么让你的字段transient

其他解决方案是使用要序列化的字段创建超类,并对其进行A扩展

但是即时修改课程,这不是正确的方法

于 2014-05-23T08:43:48.537 回答