java .class怎么用_Java中,class<?>对象如何作为类来使用??

展开全部

利用Java的反射原理,通过Class 对象生成对应类的 对象。这句话有点绕,我给你举几个例子

下面的代码是e68a84e8a2ad62616964757a686964616f31333335333163伪代码,不可以直接拿去用,但是思想是对的

代码1class A{

A(){ /五惨构造器

}

String name; //A的一个属性

int id;//A的一个属性

A(String name){ //含有一个String类型的构造器

this.name = name;

id = 0;

}

A(int id,String name){

this.id = id;

this.name = name;

}

}

这段代码含有3个构造器,一个是无参,2个是有参,并且参数数量和类型均不同,现在看下怎么用Class 通过反射创建对应的对象A functionA() throws Exception{ //注意必须抛出或捕获异常

Class> aClaz = Class.forName("A") ;//获取A的Class对象,注意这里必须是包名+类名

//或你可以用下面的方法创建class对象

//Class> aClaz = A.class; //注意Class的大小写,这个方法优于上面的方法

创建A的一个实例,通过五惨构造器

A a = (A)aClaz.newInstance(); //newInstance 是Class的方法,

//他是利用Java反射生成一个对象,但是类型是Object的,所以我们要加上强制转换

return a;

}

A functionA(String name)throws Exception{

//遇到有参构造器就不能直接newInstance了,我们必须获取Constructor对象

Class> aClaz = Class.forName("A") ;

//获取构造器,参数类型是String的Class类型

Constructor con = aClaz.getConstructor(String.class);

//利用构造器生成对象,并传入参数name

A a = (A)con.newInstance(name)

return a;

}

第三个例子我就不写了,和第二个是一模一样的

因为获取构造器的 getConstructor()方法的参数实际是Class....claz。表示他是一个长度可变的数组,所以你里面放多少个参数都可以,你只要按照你定义的构造器一次放入准确的参数类型即可,然后调用constructor的newInstance时再把参数传递进去就OK了,基本上很多步骤都有异常产生,所以你必须用try块来处理,或直接抛出,交给下一个环节处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值