如何在已知类名的情况下,得到一个类的实例?

kinfe 2004-01-12 09:35:54
clsn = "myclass.test";
//clsn为已知的类名,可以会动态改变。
try{
Class cls = Class.forName(clsn);
Object myclass = cls.newInstance();
。。。。。
这个类的引用。
}
catch(java.lang.ClassNotFoundException e)
{}
catch(java.lang.InstantiationException e)
{}
catch(java.lang.IllegalAccessException e)
{}

谢谢!
...全文
26 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
netcobol 2004-01-13
  • 打赏
  • 举报
回复
用简单工厂模式
interface A{
}

public class B implements A{
}

public class C implements A{
}

public class Factory{
public A static create(String className)
throws ClassNotFoundException{
return (A)(Class.forName(className).netInstance());
}
}
不错
asgard 2004-01-13
  • 打赏
  • 举报
回复
什么是简单工厂模式?谢谢
Kidwish 2004-01-12
  • 打赏
  • 举报
回复
用工厂模式或方法

public class SimpleFactory(){

public SimpleFactory(){
}

public Static Object getInstance(String classname){

//你的代码

return 实例
}

}
3936525 2004-01-12
  • 打赏
  • 举报
回复
就是你写得那样阿
cls.newInstance();改称(myclass.test)cls.newInstance();
就行了
honkyjiang 2004-01-12
  • 打赏
  • 举报
回复
?
kinfe 2004-01-12
  • 打赏
  • 举报
回复
up
kinfe 2004-01-12
  • 打赏
  • 举报
回复
UP
GoldApple 2004-01-12
  • 打赏
  • 举报
回复
楼主自问又自答???
Yanbin_Q 2004-01-12
  • 打赏
  • 举报
回复
用简单工厂模式

你的类名
clsn = "myclass.test";
作参数传递进去

你的类实现统一的接口或继承同一基类



interface A{
}

public class B implements A{
}

public class C implements A{
}

public class Factory{
public A static create(String className)
throws ClassNotFoundException{
return (A)(Class.forName(className).netInstance());
}
}
lijing725 2004-01-12
  • 打赏
  • 举报
回复
就用你的代码,但是把package也加上就可以了!
我不明白你的顾虑是那里,因为我觉得无论class怎么动态的变化,clsn的名字是不变的,所以你newInstance是总能找到的!

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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