反射进行类的获取和相关的字段的获取
Posted SmallCuteMonkey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反射进行类的获取和相关的字段的获取相关的知识,希望对你有一定的参考价值。
三种方式获取该类的class:
- 通过包名Class.forName("");
- 通过Class clazz1=User.class;
-
User u1=new User(); Class<? extends User> clazz3 = u1.getClass();
- 获取包名 u1.getPackage()
- 获取类名 u1.getName()
package com.hou.pojo;
//object类本身并没有实现Cloneable这个接口,所以需要我们自己进行实现
public class User implements Cloneable {
private Integer id;
private String username;
public String password;
public User(){
System.out.println("i am a brave boy and i love everyone");
}
public User(Integer id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\\'' +
", password='" + password + '\\'' +
'}';
}
public User copyObject() throws CloneNotSupportedException {
// Object clone = this.clone(); 方法一
Object clone = super.clone();// 方法二
return (User) clone;
}
public static void main(String[] args) throws Exception {
User user=new User(1,"iamakindandloveboy","111");
System.out.println(user+"------------");
User user1 = user.copyObject();
System.out.println(user1+"*********************");
}
}
package com.hou.test;
import com.hou.pojo.User;
import java.lang.reflect.Field;
public class TestUser {
public static void main(String[] args) throws Exception{
Class clazz1=Class.forName("com.hou.pojo.User");
Class clazz2=User.class;
User u1=new User();
Class<? extends User> clazz3 = u1.getClass();
// 三个方法获取到的类名相同
System.out.println(clazz1 == clazz2);
System.out.println(clazz2 == clazz3);
// 字段
/* Field[] fields=clazz2.getFields();
for (Field field:fields
) {
System.out.println(field);
}
通过这个不可以获取声明的字段
*/
Field[] declaredFields = clazz2.getDeclaredFields();
for (Field field:declaredFields){
System.out.println(field);
}
// getFields()方法只可以获取公共的属性,getDeclaredFileds方法可以获取全部的声明的属性
Field[] fields=clazz2.getFields();
for (Field field:fields
) {
System.out.println(field);
}
Package aPackage = clazz1.getPackage();
String name = clazz1.getName();
System.out.println(aPackage);
System.out.println(name);
}
}
以上是关于反射进行类的获取和相关的字段的获取的主要内容,如果未能解决你的问题,请参考以下文章