当前页面: 开发资料首页 → J2SE 专题 → java中如何根据一个字符串来创建一个类的对象
java中如何根据一个字符串来创建一个类的对象
摘要: java中如何根据一个字符串来创建一个类的对象
我有一个类叫 MyClass, 我想创建 一个类的对象,如: MyClass myClass = new MyClass("abc");
现在我定义了一个函数,Object CreateClass(String className),他有一个String类型的参数,这个参数指定了某个类的类名,如何根据这个字符串参数来构建这个类的对象并返回它。如:
MyClass myClass = (MyClass)CreateClass("MyClass");
String classname = "java.lang.String";
Object str = Class.forName(classname).newInstance();
是根据类名来构造类吧?
例子:
String className = "org.xxx.xxx"; // 类名
Class myClass = Class.forName( String className ); // 获得类
Object myObject = myClass.newInstance(); // 构造对象
如果你的类构造器是有参数的,就要先用Class的getDeclaredConstructor方法获得构造器,然后再用那个构造器来构造对象。
反射!
同意楼上
但是此时我得到的myObject并不能调用我的类的成员函数呀?
如何对它进行转换呢?
再MyClass myClass = (MyClass)myObject;不行嘛?
youhaodeyi(友好的翼) ,把这句改成这样:
Object myObject = (MyClass)myClass.newInstance(); // 构造对象
但是,我不知道我的类名叫MyClass,我只知道有一个变量包含这个类名,在这种情况下能进行转换吗?
回复人:youhaodeyi(友好的翼) ( 一级(初级)) 信誉:100 2006-10-10 14:09:00 得分:0
?
但是,我不知道我的类名叫MyClass,我只知道有一个变量包含这个类名,在这种情况下能进行转换吗?
---------------------------------
让MyClass实现MyInterface,然后
MyInterface myObject = (MyInterface)myClass.newInstance(); // 构造对象
youhaodeyi(友好的翼)
但是,我不知道我的类名叫MyClass,我只知道有一个变量包含这个类名,在这种情况下能进行转换吗?
--------------------------------------------------------------------
不知道类名叫MyClass?
哪你如何知道要调用哪个成员函数?
让MyClass实现MyInterface,然后
MyInterface myObject = (MyInterface)myClass.newInstance(); // 构造对象
这个正解.
MyInterface是什么?比如我的代码如下:
String className = "MyClass"; // 类名
Class myClass = Class.forName( String className );
...
接下来该怎么写?
高手帮忙了
你不知道类名是什么,那你还要转换,转换为什么东西啊?
也就是说java处理不了这种情况是吧?
Spring...
Sprint不是web上面用的吗?
Class c=Class.forName("ui.App");
Object o=c.newInstance();
Method[] m=c.getMethods();
for(int i=0;i
System.out.println(m[i].getName());
if(m[i].getName().equals("main")){
Object[] os=new String[1];
m[i].invoke(o,os);
}
}
这样可以调用类的方法
Method[] m=c.getMethods(); 这是得到什么?
m[i].invoke(o,os); 为什么参数会有两个?它invoke出来的东西是什么?
Method[] m=c.getMethods(); 这是得到什么?
这个得到的是一个数组,里面是这个类所有的方法,一个方法对应一个Method对象
m[i].invoke(o,os); 为什么参数会有两个?它invoke出来的东西是什么?
参数1是这个类的一个实例,参数2是这个方法所需的参数
上面那个例子就是找到ui.App类,创建它的一个实例,再找到它的main方法,然后调用