0
点赞
收藏
分享

微信扫一扫

JAVA基础系列反射

参考

​​一篇文章看懂java反射机制(反射实例化对象-反射获得构造方法,获得普通方法,获得字段属性)​​

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.time.LocalDateTime;
import java.util.List;

/**
* 反射的学习
* tag 反射
* 参考 javascript:void(0)
* @author yantingrui
* @date 2021/12/8 15:03
*/
public class Info {

@Test
void test(){

}

/**
* 传入包名获得class对象
*/
@Test
void test1() throws ClassNotFoundException {
Class<?> cls = Class.forName("com.koala.entity.Person"); // 取得Class对象
}

/**
* 获得对象,构造方法,普通方法,属性
*/
@Test
void test2() throws ClassNotFoundException, NoSuchMethodException, NoSuchFieldException, IllegalAccessException, InstantiationException {
Class<?> cls = Class.forName("com.koala.entity.Person"); // 取得Class对象
// 只能无参构造 有参数构造需要指定每个域的类型
Object obj = cls.newInstance(); //反射实例化对象
// 参数需要传入 所以的属性.class 这个才能有参数构造
Constructor<?> cons = cls.getConstructor(String.class, Integer.class, LocalDateTime.class, List.class);//获得构造方法
// Object obj = cons.newInstance("张三", 20); // 为构造方法传递参数
Method m3 = cls.getDeclaredMethod("getName"); //获得get方法
// m.invoke(obj);//输出123456789,这个obj可以是new出来的或newInstance出来的
Field nameField = cls.getDeclaredField("name"); // 获得name属性

// System.out.println(obj);
// System.out.println(o.toString());
System.out.println(cons);
System.out.println(m3);
System.out.println(nameField);
}

@Test
void test3(){

}



}


举报

相关推荐

0 条评论