我想为给定的类添加新的字段(变量)和封装方法。 例如:一个类名学生没有任何字段,如下所示:
public class Student implements Serializable{
}
然后在我的应用程序中创建一个实例;
Student s=new Student();
我想为student类添加在运行时不存在的新方法。例如:我想添加名为StudentName
的字段,以及GetStudentName()
和SetStudentName()
方法。
那么在运行时,student对象将如下所示;
public class Student implements Serializable{
private String studentName;
public void setStudentName(..){}
public String getStudentName(){return ...;}
}
在我的应用程序中,对象被写到一个文本文件中,并且所有相同类型的对象并不具有所有变量。 因此,我想只添加必需的字段以节省内存。
有什么办法能做到这一点吗? 有样本代码或链接吗?
编辑:或者我们可以创建一个类并创建不存在的实例吗?
编辑2:谢谢大家的回答,得到了很多信息和想法。 并从您的建议中选择了一条更好的途径
虽然字节码操作是可能的,但这并不明智,特别是如果您打算这样做以“节省内存”。 你不太可能有这么多的数据,以至于它会产生影响,如果你有的话,你无论如何也会将它们存储在数据库中。
您可以为此使用字节码检测库,如Javassist或ASM。 下面是一个使用Javassist添加字段或方法的示例。
为什么不创建一个值的hashmap
呢? 效率更高,并且具有您想要的所有灵活性。
public class Student
{
private HashMap<String, String> values;
public Student()
{
this.values = new HashMap<String, String>();
}
public void addValue(String name, String value)
{
values.put(name, value);
}
public String getValue(String name)
{
return values.get(name);
}
}
为什么是哈希地图?
您说过所有对象可能具有不同的值,您将通过string
定义这些新方法和属性。 嗯。。 这将在没有任何可怕的字节码操作的情况下实现该功能。 例如:
String attrName = "name";
String attrValue = "jim";
Student stu = new Student();
stu.addValue(attrName, attrValue);
目前,您的hashmap
中只有一个值。 您唯一需要面对的是HashMap
对象本身和两个方法,坦率地说,这是一个更整洁的解决方案的公平交换。
问题内容: 我在尝试了解如何在Django中创建动态选择字段时遇到了一些麻烦。我有一个模型设置类似: 我想做的是创建一个选择字段whos的值是与该骑手相关联的航点(将是登录的人)。 目前,我以如下形式覆盖init: 但是所有要做的就是列出所有路标,它们与任何特定的骑手都没有关联。有任何想法吗?谢谢。 问题答案: 你可以通过将用户传递给表单init来过滤航点 启动表单时从你的角度来看 在模型形式的情
问题内容: 这是有关django的问题。我有一个模特说“汽车”。这将具有一些基本字段,例如“颜色”,“车辆所有者名称”,“车辆成本”。 我想提供一个表格,用户可以根据他要添加的汽车添加额外的字段。例如,如果用户添加“汽车”,则他将在运行时动态地在表单中添加其他字段,例如“汽车里程”,“校准制造商”。假设用户想要添加“卡车”,他将添加“可以运载的货物”,“许可证”等。 如何在Django中实现这一目
问题内容: 使用angular.js,我有一个要显示给用户进行编辑(然后提交)的表单域的动态列表: 和HTML: 看到这个小提琴。由于我不明白的原因,文本输入框不可编辑。如上所述,我尝试了两种不同的方法:和。是完全不可编辑的,将允许 一次 击键,然后变得模糊。我究竟做错了什么?谢谢。 问题答案: 它是可编辑的,但是在每次按键后,您的文本字段失去焦点,因此您必须再次单击它以放置另一个字符。 发生这种
我试图根据属性文件中定义的URL数量创建动态JButton和JLabel。 到目前为止,我尝试的是: 在我的Java程序中,我正在读取属性文件,并根据拆分字符串,现在我需要相应地生成按钮和标签。就像
本文向大家介绍C#动态创建button的方法,包括了C#动态创建button的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#动态创建button的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。
本文向大家介绍Javascript动态创建div的方法,包括了Javascript动态创建div的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Javascript动态创建div的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的javascript程序设计有所帮助。
这是我的主页,在那里我选择了一个选项字段。 opt1.php: 这是我的javascript,在这里我从上面的select获得值,并传递给opt2.php 这是我的opt2.php页面,用于显示sub select。 实际上,这并没有产生预期的结果。 有没有逻辑上或处理上的错误?
本文向大家介绍javascript动态创建链接的方法,包括了javascript动态创建链接的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript动态创建链接的方法。分享给大家供大家参考。具体分析如下: 动态创建链接示例: 希望本文所述对大家的javascript程序设计有所帮助。