怎么把字符串里装的类名读出来,并用它NEW 对象!在线等! class Newclass{}String a="Newclass";怎么把a 里面的字符串读出来并且NEW出个对象呢? 急 在线等!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String a="Newclass"; Object obj=Class.forName(a).newInstance();使用反射 。 try { String s = "newclass"; Class.forName("Newclass"); } catch (ClassNotFoundException e) { e.printStackTrace(); } import java.util.logging.Level;import java.util.logging.Logger;class Newclass {}public class Test { public static void main(String[] args) { String a = "Newclass"; try { Class className = Class.forName(a); Object obj = className.newInstance(); System.out.println(obj); } catch (ClassNotFoundException ex) { } catch (InstantiationException ex) { } catch (IllegalAccessException ex) { } }} 如果 a中有构造方法呢?怎么办?~~· ZangXT 大哥,你能说清楚点告诉小弟吗?怎么初始化属性? 去看Class类的方法getConstructors();getConstructor(得到你需要的Constructor,再newInstance结合文档,使用不难. ZangXT 大哥,你就写个类 里面有两个简单类型的属性,写出来看下吧 大家伙好学习学习!!!! 我马上结贴~~· 类似的例子很多http://www.javaeye.com/topic/140718 public class Test { private String className = "MyClass"; /** * 默认构造方法 */ public MyClass getDefaultConstruct() { MyClass myClass = null; try { Object o = Class.forName(className).newInstance(); myClass = (MyClass) o; } catch (Exception e) { e.printStackTrace(); } return myClass; } /** * 带参数的构造方法 */ private MyClass getWithParams() { // 至少要知道构造方法的参数数量、类型,要不然你没办法传数据 Object[] params = new Object[] { "myname", 18 }; MyClass myClass = null; try { Class clazz = Class.forName(className); Constructor[] constructors = clazz.getDeclaredConstructors(); for (Constructor constructor : constructors) { // 找出带参数构造方法 if (constructor.getParameterTypes().length > 0) { myClass = (MyClass) constructor.newInstance(params); } } } catch (Exception e) { e.printStackTrace(); } return myClass; } public static void main(String[] args) { Test test = new Test(); // java反射机制的应用。 test.getDefaultConstruct(); test.getWithParams(); // 控制台输出:构造方法调用成功!OK // MyClass.MyClass() // MyClass.MyClass(String name, Integer age): myname , 18 }}class MyClass { String name; Integer age; public MyClass() { System.out.println("MyClass.MyClass()"); } public MyClass(String name, Integer age) { super(); this.name = name; this.age = age; System.out.println("MyClass.MyClass(String name, Integer age): " + this.name + " , " + this.age); }} synchronized代码块中的参数必须是对象吗 一个新手特愚蠢+简单的问题 急 为什么createImage(300,500)老是返回空对象? 确认一个Java调用C++的问题,高分请教啊 通过WWW.HAOSHUA.COM 成功访问GOOGLE 如何用java程序调用运行可执行文件?? 请问各位:小弟有些不明:jdk和java runtime system到底区别在那里,还有j2se,j2me,j2ee是什么东东,怎样才能用呢? 关于学不学C语言的问题! 有什么优点? 请教一个java多线程,wait和nofity的问题。 不明白,请大家帮助看看 自己写的程序出问题了。
Object obj=Class.forName(a).newInstance();使用反射 。
String s = "newclass";
Class.forName("Newclass");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
import java.util.logging.Logger;class Newclass {
}public class Test { public static void main(String[] args) {
String a = "Newclass";
try {
Class className = Class.forName(a);
Object obj = className.newInstance();
System.out.println(obj);
} catch (ClassNotFoundException ex) {
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
} }
}
getConstructors();
getConstructor(
得到你需要的Constructor,再newInstance结合文档,使用不难.
http://www.javaeye.com/topic/140718
private String className = "MyClass";
/**
* 默认构造方法
*/
public MyClass getDefaultConstruct() {
MyClass myClass = null;
try {
Object o = Class.forName(className).newInstance();
myClass = (MyClass) o;
} catch (Exception e) {
e.printStackTrace();
}
return myClass;
} /**
* 带参数的构造方法
*/
private MyClass getWithParams() {
// 至少要知道构造方法的参数数量、类型,要不然你没办法传数据
Object[] params = new Object[] { "myname", 18 };
MyClass myClass = null;
try {
Class clazz = Class.forName(className);
Constructor[] constructors = clazz.getDeclaredConstructors();
for (Constructor constructor : constructors) {
// 找出带参数构造方法
if (constructor.getParameterTypes().length > 0) {
myClass = (MyClass) constructor.newInstance(params);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return myClass; } public static void main(String[] args) {
Test test = new Test();
// java反射机制的应用。
test.getDefaultConstruct();
test.getWithParams(); // 控制台输出:构造方法调用成功!OK
// MyClass.MyClass()
// MyClass.MyClass(String name, Integer age): myname , 18 }}class MyClass {
String name;
Integer age; public MyClass() {
System.out.println("MyClass.MyClass()");
} public MyClass(String name, Integer age) {
super();
this.name = name;
this.age = age;
System.out.println("MyClass.MyClass(String name, Integer age): "
+ this.name + " , " + this.age);
}}