动态创建字段和方法

Déb*_*ora 7 java

我想为给定的类添加新的字段(变量)和封装方法.例如:类名Student没有任何字段如下:

public class Student implements Serializable{

}
Run Code Online (Sandbox Code Playgroud)

然后在我的应用程序中创建一个实例;

Student s=new Student();
Run Code Online (Sandbox Code Playgroud)

我想在运行时添加学生类不存在的新方法.例如:我想添加一个名为studentName,getStudentName()setStudentName()方法的字段.

然后在运行时,学生对象将是这样的;

public class Student implements Serializable{

    private String studentName;

    public void setStudentName(..){}
    public String getStudentName(){return ...;}
}
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,对象被写入文本文件,所有相同类型的对象都没有所有变量.因此,我只想添加必需的字段来节省内存.

有办法有办法吗?任何示例代码或链接?

编辑:或者我们可以创建一个类,并创建不存在的实例?

编辑2:谢谢你们所有人的回答,并得到了许多信息和想法.并改变了从你的建议到更好的道路的方式

chr*_*her 7

为什么不创造一个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);
      }
}
Run Code Online (Sandbox Code Playgroud)

为什么是HashMap?

您说所有对象可能具有不同的值,您将通过a定义这些新方法和属性String.嗯..这将实现该功能,没有任何可怕的字节码操作.例如:

String attrName = "name";
String attrValue = "jim";
Student stu = new Student();
stu.addValue(attrName, attrValue);
Run Code Online (Sandbox Code Playgroud)

目前,你只有一个值HashMap.你必须面对的唯一无意中听到的是HashMap对象本身,以及两种方法,坦率地说这是一个更为简洁的解决方案的公平交易.