java 反射调用方法不实例化_Java 反射机制 之 调用方法

Java 反射机制 之 调用方法

一、newInstance()

注意:newInstance() 底层调用的事该类的无参构造方法,所以没有无参构造方法就会出现实例化异常!

public static void main(String[] args) throws Exception {

// 一般方法

UserService userService = new UserService();

System.out.println("直接创建对象: "+userService.login("root", "123456"));// true

// 通过反射机制调用方法 四步骤

// 1、获取类

Class> aClass = Class.forName("com.hjx.反射.反射调用方法.UserService");

// 2、通过调用无参构造方法 创建对象

// newInstance()只能调用无参,不然会报实例化异常 InstantiationException

Object o = aClass.newInstance();

// 3、获取方法 因为方法有可能重载,所以要指定参数类型和个数,位置

Method method = aClass.getDeclaredMethod("login",String.class,String.class);

// 如果获取的方法是私有,则需要取消检查。不然会报非法访问异常 IllegalAccessException

// method.setAccessible(true);

// 4、调用方法

Object o1 = method.invoke(o, "root", "123456");

System.out.println("通过反射机制调用方法: " +o1);// true

}

二、Constructor

获取指定的 Constructor 对象,再用 Constructor 对象调用 newInstance() 实例化。

这个方法可以指定构造方法,即可用有参构造来实例化

代码参考:

public static void main(String[] args) throws Exception {

// 有参构造创建对象

// 1、获取类

Class> aClass = Class.forName("com.hjx.反射.Person");

// 2、获取指定有参的构造方法

Constructor> constructor = aClass.getDeclaredConstructor(

String.class, int.class, String.class, String.class);

// 3、通过上面 构造方法 创建对象

Object o = constructor.newInstance("张胜男", 18, "bejign", "wu");

System.out.println(o);

// 无参构造创建对象

Object o1 = aClass.newInstance();

System.out.println(o1);

}

输出结果:

Person{name='张胜男', age=18, address='bejign', remark='wu'}

Person{name='null', age=0, address='null', remark='null'}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值