首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java中怎么根据一个包含类名的字符串获得这个类实例

2012-01-29 
java中如何根据一个包含类名的字符串获得这个类实例?例如Public Object getClassInstance(String strClass

java中如何根据一个包含类名的字符串获得这个类实例?
例如
Public Object getClassInstance(String strClassName)
{
return ...;
}
调用时写getClassInstance("ArrayList"),于是得到一个ArrayList的实例?在调用程序中再如何将返回的Object转换为ArrayList类型?
.net中反射可以做到上述要求,不知JAVA怎么做。
谢谢!

[解决办法]
Object a = Class.forName("xx.xxx.Xxx").newInstance();
转为为ArrayList的时候,用(ArrayList)a就行了

[解决办法]

Java code
import java.util.*;public class Test{    public static void main(String [] args)    {        try        {            ArrayList al = (ArrayList)Class.forName("java.util.ArrayList").newInstance();        }catch(Exception e)        {}    }}
[解决办法]
java一样也有反射,可以从远端接受到字节流然后组装成你要的类。。。。
[解决办法]
不明白你要干什么~`
为嘛要(Class.forName(strClassName))object这样写
[解决办法]
彻底无关,你都用Object类型不就行了?
[解决办法]
Class.forNanme().newInstance()反回的是一个Object
只需要强制转换就行了啊
Object o = Class.forName("java.util.ArrayList").newInstance();
ArrayList al = (ArrayList)o;
就行了啊。

[解决办法]
外面的类肯定得知道这个Object到底完成了什么样的功能,否则 你程序如何的设计?

所以一般来说你可以先定义一个接口类,如List这样




至于实现类是什么还有些什么样的额外方法就可以不理会了

List list = newList("java.util.ArrayList")类似写法。
[解决办法]
java的反映还有带参数的实例化、数组等,在网上都可以找到相关的样例代码的。
[解决办法]
大家好,我是楼主,我要(Class.forName(strClassName))object这样写的目的是程序可以与对象的具体类型彻底无关,实现更大的灵活性。不知是否可行?谢谢!
______________________________

在目前版本的JDK中不可以。强转的类型必须显示地声明,一般可以强转为object的父类或者接口。

热点排行