首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

怎么动态地给一个类加入一些方法和属性

2012-01-31 
如何动态地给一个类加入一些方法和属性?比如一个类:classTest{}我想在别的类里使Test类具有publicintgetX(

如何动态地给一个类加入一些方法和属性?
比如一个类:
class   Test   {

}

我想在别的类里使   Test   类具有   public   int   getX   (),   public   void   setX(x)方法,应该怎么做呢

[解决办法]
修改.class文件
或者写个反编译代码出来,反编译》添加方法》编译,您看可以么?
[解决办法]
我没试过,但直觉上觉得这样不可以
因为不知什么时候你给一个接口加上个方法那就麻烦了
[解决办法]
应该不可以。必须实现指定,可能N年后的人工智能能做到吧
[解决办法]
用JAVA程序来写JAVA程序,再编译,不算动态生成么?
[解决办法]
你可以直接输出到.java文件里啊
[解决办法]
当然不可以!如果可以的话,安全性就出大问题了,那个时候JAVA就要被淘汰了!!
但有例外,除非你是高手中的高手,懂得破解字节码!impossible mission...
[解决办法]
不知道你是不是这个意思:
回调:
package org.battwofame.hellojava.test.test1;

class CallBack {
public void callBack() {
System.out.println( "aaaaaaaaaaaaaaaaaa ");
}
}

interface ICallBack {
public void callBack(CallBack cb);
}

public class TestCallBack implements ICallBack {
public void callBack(CallBack cb) {
cb.callBack();
}
public static void main(String[] args) {
TestCallBack tcb = new TestCallBack();
tcb.callBack(new CallBack());
}
}
[解决办法]
使用继承Test的办法,在子类中扩展方法
这样既规范,又解决问题~~
[解决办法]
public aspect ExtendClassRecipe
{
private int MyClass.newvariable = 20; //给类MyClass动态增加一个属性

public int MyClass.bar(String name) //给类MyClass动态增加一个方法
{
System.out.println( "In bar(String name), name: "+name);
return this.newVariable;
}
}

需要用AspectJ支持,有Eclipse的插件可下载。
[解决办法]
当然可以了,网上有很多这方面的应用,比如spring就是用了动态字节码生成技术。
看看这些开源工具吧
http://www.open-open.com/54.htm

把静态的java语言像动态语言一样用起来!!!!

热点排行