java 怎么对已经实例化好的对象进行接口实现了?

一个程序猿的梦 2017-03-23 05:11:56
反射可以实现吗?还是说有其他的方法?
...全文
392 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
China小嘿 2017-03-27
  • 打赏
  • 举报
回复 1
可以试试匿名内部类
逗泥丸的平方 2017-03-27
  • 打赏
  • 举报
回复
引用 5 楼 qq1723205668 的回复:
[quote=引用 4 楼 qq_35209952 的回复:] 这种要求很奇怪啊, 而且好像也危险呀, 说一说有什么难言之隐. 为什么不能一开始就实现?
怎么说了,如果一开始就实现就已经绑定死了,而且要绑定的类太多,工作量过大,就是想根自定义一个方法,动态的根据传递的class,实现该接口,还是说我这想法太偏离常识了?[/quote] 你这个想法完全不符合java的设计呀.. 实现接口要在你的类里面加个方法呀... 你突然插进来一个实现算是怎么回事. 它的实现你从哪里找? 如果找不到,那这不是要gg . 如果你能找到, 代理一下就好了吧. 如果你说太多了,那他们每个类的实现还都不一样吗? 一样为什么不用继承. 不一样的话,那就不是一个东西了吧. 另外 而且要绑定的类太多 是什么意思? 根据我的理解,接口使用的时候应该只是一个受限的表达, 可以通过一个规范的约束节约重复代码. so,问题能不能说的再详细一点..
  • 打赏
  • 举报
回复
引用 4 楼 qq_35209952 的回复:
这种要求很奇怪啊, 而且好像也危险呀, 说一说有什么难言之隐. 为什么不能一开始就实现?
怎么说了,如果一开始就实现就已经绑定死了,而且要绑定的类太多,工作量过大,就是想根自定义一个方法,动态的根据传递的class,实现该接口,还是说我这想法太偏离常识了?
逗泥丸的平方 2017-03-24
  • 打赏
  • 举报
回复
这种要求很奇怪啊, 而且好像也危险呀, 说一说有什么难言之隐. 为什么不能一开始就实现?
zs808 2017-03-24
  • 打赏
  • 举报
回复
引用 2 楼 qq1723205668 的回复:
[quote=引用 1 楼 zs808 的回复:] 已经实例化好的对象,因为其内存布局与klass信息都已经确定,是没办法实现接口的。 你可以通过ASM构建一个新的实现了该接口的类,然后实例化该类,并且把旧对象的数据克隆到新对象中,然后修改对象引用到新对象。不过这么做对结构的破坏性是非常眼中的,不要这么搞。
如果使用底层字节码生成,工作量太大了,还有没有其他方法,可以构建实现该接口的类,然后实例化?[/quote] 写一个类,然后这个类继承自要替代的对象的类,然后通过ClassLoader将这个类加载,然后实例化这个类,然后替换引用。
  • 打赏
  • 举报
回复
引用 1 楼 zs808 的回复:
已经实例化好的对象,因为其内存布局与klass信息都已经确定,是没办法实现接口的。 你可以通过ASM构建一个新的实现了该接口的类,然后实例化该类,并且把旧对象的数据克隆到新对象中,然后修改对象引用到新对象。不过这么做对结构的破坏性是非常眼中的,不要这么搞。
如果使用底层字节码生成,工作量太大了,还有没有其他方法,可以构建实现该接口的类,然后实例化?
zs808 2017-03-23
  • 打赏
  • 举报
回复
已经实例化好的对象,因为其内存布局与klass信息都已经确定,是没办法实现接口的。 你可以通过ASM构建一个新的实现了该接口的类,然后实例化该类,并且把旧对象的数据克隆到新对象中,然后修改对象引用到新对象。不过这么做对结构的破坏性是非常眼中的,不要这么搞。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧