日期:2014-05-20  浏览次数:21060 次

JAVA怎么给一个对象动态添加属性?
譬如如下代码
Java code

public class A
{
public static void main(String[] args)
{
A a = new A();
}
}


现在我希望临时给这个a加个属性name
可以获得a.name = "xxx";
同时不修改A这个class
JAVA可以实现吗?如何实现呢?
初学JAVA,谢谢~~~~

------解决方案--------------------
按照lz的想法,如果是在程序中实现这个功能应该用继承吧(会增加一个类)
另外Java SE 6 新特性: Instrumentation 新功能:能够替换和修改某些类的定义(虚拟机启动后的动态的操作类)
------解决方案--------------------
通过程序修改 .class 文件!

下面这个是用 ASM 工具为 Student 类添加一个 public String 类型的 address 属性:

1,需要添加属性的原始类:Student.java

Java code
public class Student {
    private int age;
    private String name;
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }    
}

------解决方案--------------------
探讨
额,感谢您的回复
不过,我希望的是在不修改A的情况下,譬如你这个A是JDK自带的
就拿socket举例把
class A
{
public static void main(String[] args)
{
socket = serverSocket.accept();
}
}
现在我要求给这个socket加个name字段,能实现吗?