Java中 class<?> 创建对象

class  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;
     }
}
 
 
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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值