java 反射 详解(一) Class三种获取方式&Class的常用方法

反射

反射:简单来说就是来描述一系列类

反射属性:
Class:用来描述类本身
Package:用来描述类所属的包
Field:用来描述类中的属性
Method:用来描述类中的方法
Constructor: 用来描述类中的构造方法
Annotation: 用来描述类中的注解

如何来获取Class

新建一个类–Person

package my;


public class Person{
   
}

1:通过 包名.类名

 Class<?> aClass = Class.forName("my.Person");

2:类名.class

 Class<Person> personClass = Person.class;

3:对象.getClass

Class<? extends Person> apClass = person.getClass();

Class中的常用方法

Class<?> aClass = Class.forName("my.Person");
 int modifiers = aClass.getModifiers();//获取修饰符 返回值是一个int类型 不同的修饰符对应不同的数字
 System.out.println(aClass.getName());//获取类名字
 System.out.println(aClass.getPackage());//获取所在包名
 aClass.getSuperClass()//获取父类
 Class<?>[] interfaces = aClass.getInterfaces();// 类实现的接口
 java.lang.Object o = aClass.newInstance();//相当于调用了类中的构造方法新建了一个对象 默认无参数的!


 Field[] fields = aClass.getFields();//获取类中的所有属性
  try {
                aClass.getDeclaredField("name");//可以私有
                Field name = aClass.getField("name");//获取类中的属性 要知道属性名 并且是共有的
                try {
                    name.set(person,"wo");//给某个对象的属性赋值
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            } catch (NoSuchFieldException e) {
                e.printStackTrace();
            }
 Constructor<?> constructor = aClass.getConstructor();//获取类的构造方法
 Person  person1 = (Person)constructor.newInstance();//通过构造方法新建的一个对象
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值