java中如何根据一个字符串来创建和字符串同名类的对象

比如我现在知道一个字符串stringop="Student";现在根据op这个字符串创建一个Student的对象。Student是个已存在的类类似这样的效果optest=... 比如我现在知道一个字符串string op="Student";
现在根据op这个字符串创建一个Student的对象。
Student是个已存在的类
类似这样的效果
op test = new op();
展开
 我来答
又来是0t
2011-10-31
知道答主
回答量:46
采纳率:0%
帮助的人:16.8万
展开全部
先写成类文件保存.class 再用映射 classforname().希望能帮到你
匿名用户
2011-10-31
展开全部
try {
String clazzName = "Student";
Class clazz = Class.forName(clazzName );
Object obj = clazz.newInstance();
} catch (Exception e) {
r.printStackTrace();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
juanchen2
2011-10-31 · TA获得超过427个赞
知道小有建树答主
回答量:331
采纳率:0%
帮助的人:159万
展开全部
String str = new (op);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fcpahj
推荐于2017-11-24 · 超过14用户采纳过TA的回答
知道答主
回答量:34
采纳率:0%
帮助的人:42.6万
展开全部
Object obj = Class.forName(op).newInstance();

==========================================
jdk文档如是说:
--------------------------------------------------------------------------------

forName
public static Class<?> forName(String className)
throws ClassNotFoundException返回与带有给定字符串名的类或接口相关联的 Class 对象。调用此方法等效于:
Class.forName(className, true, currentLoader)
其中 currentLoader 表示此类的定义类加载器。
例如,以下代码片段返回 java.lang.Thread 类的运行时 Class 描述符。

Class t = Class.forName("java.lang.Thread")
调用 forName("X") 将导致名为 X 的类被初始化。

参数:
className - 所需类的完全限定名。
返回:
具有指定名的类的 Class 对象。
抛出:
LinkageError - 如果链接失败
ExceptionInInitializerError - 如果此方法所激发的初始化失败
ClassNotFoundException - 如果找不到该类

--------------------------------------------------------------------------------

newInstance
public T newInstance()
throws InstantiationException,
IllegalAccessException创建此 Class 对象所表示的类的一个新实例。如同用一个带有一个空参数列表的 new 表达式实例化该类。如果该类尚未初始化,则初始化之。
注意,此方法传播 nullary 构造方法所抛出的任何异常,包括已检查的异常。使用此方法可以有效地绕过编译时的异常检查,而在其他情况下编译器都会执行该检查。 Constructor.newInstance 方法将该构造方法所抛出的任何异常包装在一个(已检查的)InvocationTargetException 中,从而避免了这一问题。

返回:
此对象所表示的类的一个新分配的实例。
抛出:
IllegalAccessException - 如果此类或其 nullary 构造方法是不可访问的。
InstantiationException - 如果此 Class 表示一个抽象类、接口、数组类、基本类型或 void; 或者该类没有 nullary 构造方法; 或者由于某种其他原因导致实例化过程失败。
ExceptionInInitializerError - 如果该方法引发的初始化失败。
SecurityException - 如果存在安全管理器 s,并满足下列任一条件:
调用 s.checkMemberAccess(this, Member.PUBLIC) 拒绝创建该类的新实例
调用方的类加载器不同于也不是该类的类加载器的一个祖先,并且对 s.checkPackageAccess() 的调用拒绝访问该类的包

--------------------------------------------------------------------------------

参考资料: j2sk-doc

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式