社区
Java SE
帖子详情
如何动态地给一个类加入一些方法和属性?
ccterran
2007-07-26 09:14:33
比如一个类:
class Test {
}
我想在别的类里使 Test 类具有 public int getX (), public void setX(x)方法,应该怎么做呢
...全文
413
17
打赏
收藏
如何动态地给一个类加入一些方法和属性?
比如一个类: class Test { } 我想在别的类里使 Test 类具有 public int getX (), public void setX(x)方法,应该怎么做呢
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Clerk_9919
2007-07-27
打赏
举报
回复
个人认为使用ASM更加方便高效 http://asm.objectweb.org/
ccterran
2007-07-27
打赏
举报
回复
用过动态语言的,如Ruby,PHP,都知道可以通过反射机制给一个类动态添加属性和方法,这样类的内容我就可以动态生成。比如把数据库字段和POJO对象对应起来,如果可以动态添加,POJO就可以动态生成,无需再在里面写上一堆setters和getters。
我试试上面的方案。
flyforlove
2007-07-27
打赏
举报
回复
当然可以了,网上有很多这方面的应用,比如spring就是用了动态字节码生成技术。
看看这些开源工具吧
http://www.open-open.com/54.htm
把静态的java语言像动态语言一样用起来!!!!
sore520
2007-07-27
打赏
举报
回复
不知道对类进行读写 遵守一定的标准行不?
bojianyu
2007-07-27
打赏
举报
回复
妙!
dice_com
2007-07-27
打赏
举报
回复
能问一下楼主这个需求的来源是什么么?能把你遇到的情况说的更明确一些吗?
Yanbin_Q
2007-07-27
打赏
举报
回复
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的插件可下载。
zdjray
2007-07-27
打赏
举报
回复
使用继承Test的办法,在子类中扩展方法
这样既规范,又解决问题~~
yijie1206688
2007-07-26
打赏
举报
回复
不知道你是不是这个意思:
回调:
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());
}
}
feihua317
2007-07-26
打赏
举报
回复
当然不可以!如果可以的话,安全性就出大问题了,那个时候JAVA就要被淘汰了!!
但有例外,除非你是高手中的高手,懂得破解字节码!impossible mission...
zapdos
2007-07-26
打赏
举报
回复
你可以直接输出到.java文件里啊
zapdos
2007-07-26
打赏
举报
回复
用JAVA程序来写JAVA程序,再编译,不算动态生成么?
clevercong
2007-07-26
打赏
举报
回复
应该不可以。必须实现指定,可能N年后的人工智能能做到吧
ccterran
2007-07-26
打赏
举报
回复
应该不可以,但如果可以的话,就可以动态生成代码,不仅省去了大量人力,还可以使类结构变得相当简单。
zapdos
2007-07-26
打赏
举报
回复
我没试过,但直觉上觉得这样不可以
因为不知什么时候你给一个接口加上个方法那就麻烦了
ccterran
2007-07-26
打赏
举报
回复
谢谢回复。我的意思是说可以在其他类里面调一些方法来完成这个工作,比如:
class Test {
}
class MethodAdder {
public void addMethod () {
add(Test, "public int getX () {}");
}
}
如果这样能执行就好了。
zapdos
2007-07-26
打赏
举报
回复
修改.class文件
或者写个反编译代码出来,反编译》添加方法》编译,您看可以么?
Android Compose 新闻App(二)ViewModel、Hlit、数据流.docx
Android Compose 新闻App(二)ViewModel、Hlit、数据流.docx
软时间窗下区域内电子商务物流配送线路问题研究.docx
软时间窗下区域内电子商务物流配送线路问题研究.docx
Android kotlin作用域函数.docx
Android kotlin作用域函数.docx
项目管理过程电子文件管理办法.doc
项目管理过程电子文件管理办法.doc
物联网技术在图书馆管理中的应用研究.docx
物联网技术在图书馆管理中的应用研究.docx
Java SE
62,635
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章