社区
Java SE
帖子详情
Java怎样动态生成对象
hk2000c
2003-09-26 11:55:47
怎样在程序里动态的根据一些输入,来生成不同动态对象供以后使用?
有那位Superman做过这样的东西。
...全文
962
16
打赏
收藏
Java怎样动态生成对象
怎样在程序里动态的根据一些输入,来生成不同动态对象供以后使用? 有那位Superman做过这样的东西。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Yssss1980
2003-09-26
打赏
举报
回复
Object ob=Class.forName(className).NewInstance();
ob就是你要生成的对象啦
Yanbin_Q
2003-09-26
打赏
举报
回复
什么叫动态对象?
懒汉式单例模式那样子的行不行。
hk2000c
2003-09-26
打赏
举报
回复
to kypfos:
因为许多问题是根据实际情况需要而提出的,其实并非什么都是动态的,那样子也没办法使用,
比方说,用户需要一些能够自定义的运算规则,由这些规则以及以前预定义的运算类(基础规则)一起能算出最终结果,那这些由用户制定的函数怎样处理?
我想把他们放到一个ObjectPool中,而这些对象又不能预先定义,所以我想到了动态生成未知的类,虽然有点激进,但是觉得这样做能和以前的运算类结合的很好,使用也差不多。其他朋友觉得有什么想法?
hk2000c
2003-09-26
打赏
举报
回复
谢谢 jokerjava 以及其他的朋友给我很多启示,和解决答案。
Yanbin_Q
2003-09-26
打赏
举报
回复
类是动态的,动态类里的方法,变量都是动态,那这样做跟程序里进行硬编码也没有什么区别,用接口多好啊,楼主肯定是把问题复杂化了。什么都动态怎么去引用,GC怎么去处理啊。
jokerjava
2003-09-26
打赏
举报
回复
难点在哪呢
不就是用户根据规则订制java文件么 规则是你定的 你怎么生成都行了
然后调用sun.tools.javac.*中的类编译 然后用ClassLoader导入
然后
Object ob=Class.forName(className).NewInstance();
然后
java.lang.reflect.Method
java.lang.reflect.Constructor
java.lang.reflect.Member
hk2000c
2003-09-26
打赏
举报
回复
反射好像不是解决这个问题的钥匙吧。reflect 只能得到既定的类的实例和方法。并不能当动态创建的。不是吗?
new_zero
2003-09-26
打赏
举报
回复
gz
pxboy
2003-09-26
打赏
举报
回复
gz
znjq1001
2003-09-26
打赏
举报
回复
用反射!!
hk2000c
2003-09-26
打赏
举报
回复
如果那么简单就好了,其实这些对象类型可能以前没有声明过,也可能共同有一个抽象父类,由用户定义产生很多继承父类的动态子对象,也就说这些类也不是硬编码的,属于动态类,动态对象。里面的方法都是临时创建的,里面的方法实现是由一系列输入所确定的,有可能方法名相同,但参数数目类型不尽相同。有没有好的实现方法?
fast_time
2003-09-26
打赏
举报
回复
java.lang.reflect.Method
java.lang.reflect.Constructor
java.lang.reflect.Member
Yanbin_Q
2003-09-26
打赏
举报
回复
看看简单工厂模式,我想最适合你啦。
抽象产品 A 有被实现的三个具体产品
B C D
然后由一个具本工厂E的一个静态方法factory(String s):A
根据参数s来创建B C D 的实例,那几个实例就会有你的需要的不同的方法了。
yuqf2000
2003-09-26
打赏
举报
回复
搂住的意思是不是生成类文件,然后把.java文件保存在磁盘上,再调用?
这个可真可以试试,现根据要求生成类文件字符串,再保存到磁盘上,然后再进行编译,再使用楼上的方法newInstance,hoho,不会是真的吧。
hk2000c
2003-09-26
打赏
举报
回复
我想动态的生成一些对象,这些动态对象可以根据不同用户参数需要提供一些参数数目不同的函数。
这种机制怎样实现?
web_spider
2003-09-26
打赏
举报
回复
如果是相关类,首先可以提取一个接口,例如:
CommanOperation;然后,用
CommanOperation comm =(CommanOperation)Class.forName(className).newInstance();
生成相应的实例,以后可以根据接口作相应的操作。
如果是一组无关的类,就没有必要动态生成了。
Think in
Java
(中文版)-chm格式
第1章
对象
入门 1.1 抽象的进步 1.2
对象
的接口 1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重新使用接口 1.5.1 改善基础类 1.5.2 等价和类似关系 1.6 多形
对象
的互换使用 1.6.1
动态
绑定 1.6.2 抽象的基础类和接口 1.7
对象
的创建和存在时间 1.7.1 集合与继承器 1.7.2 单根结构 1.7.3 集合库与方便使用集合 1.7.4 清除时的困境:由谁负责清除? 1.8 违例控制:解决错误 1.9 多线程 1.10 永久性 1.11
Java
和因特网 1.11.1 什么是Web? 1.11.2 客户端编程 1.11.3 服务器端编程 1.11.4 一个独立的领域:应用程序 1.12 分析和设计 1.12.1 不要迷失 1.12.2 阶段0:拟出一个计划 1.12.3 阶段1:要制作什么? 1.12.4 阶段2:开始构建? 1.12.5 阶段3:正式创建 1.12.6 阶段4:校订 1.12.7 计划的回报 1.13
Java
还是C++?
Java
动态
创建
对象
并执行方法
动态
创建
对象
执行方法 有了Class
对象
能做什么 创建类的
对象
:调用Class
对象
的newInstance()方法 类必须有一个无参数的构造器 类的构造器的访问权限需要足够 没有无参构造器就不能创建
对象
了吗?并非如此。 只要在操作的时候明确的调用类中的构造器,并将参数传递进去后就可以进行实例化操作。 步骤如下: 通过Class类的getDeclaredConstructor(Class…parameterType)取得本类的指定形参类型的构造器 向构造器的形参中传递一个
对象
数组进去,里面包含了构造
java
面向
对象
上篇
Java
是面向
对象
的程序设计语言,提供了定义类,成员变量,方法等基本功能,同时
java
也支持面向
对象
的三大特征:封装,继承和多态。
java
面向
对象
课程主要讲解
java
面向
对象
的基础内容. • 定义类的语法格式•
对象
的创建和使用• 方法详解• 成员变量和局部变量• 隐藏与封装• 深入理解构造器• 继承与多态• 继承与组合• 初始化块
java
动态
生成
对象
和属性
最近项目中大量使用了流程,流程框架采用的是activity,客户要求把表单数据和对应的流程审批数据导出为pdf,简单的做法就是扩展表单的类,把每一个流程节点作为一个属性添加到类,但是有个问题是:流程不确定,后续可能会修改,导致流程节点无法写死到类上。 然后想到可以利用cglib的
动态
生成
类和属性的方法,
动态
的把流程节点作为属性添加到类,同时为了方便维护,使用自定义注解和aop统一进行处理。自定义注解和aop的使用可参考SpringAOP+自定义注解实现日志功能,这里不详细说了,下面说下实现思路和实现代码,代
Java
基础-利用反射
动态
创建
对象
Java
基础-反射 1.反射概念
JAVA
反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个
对象
,都能够调用它的任意方法和属性;这种
动态
获取信息以及
动态
调用
对象
方法的功能称为
java
语言的反射机制。 图解: 2.反射功能 三种方式获取Class
对象
@Test//获取Class --范围:所有的字节码文件 public void test1() throws ClassNotFoundException { //方式1--通过类名
Java SE
62,616
社区成员
307,307
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章