您的位置:首页 > 编程语言 > Java开发

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

2020-02-12 11:42 169 查看

反射

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

反射属性:
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();//通过构造方法新建的一个对象
  • 点赞
  • 收藏
  • 分享
  • 文章举报
qq_43667272 发布了36 篇原创文章 · 获赞 0 · 访问量 1438 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: