java中getClass()方法详解
Class也是个对象,实例对象也是对象。他们是不同的东西。不是站在不同角度描述的同一种东西。 需要理解java的本质。这篇文章和天圆地方说一样,只是自圆其说的解决了你当前的疑惑,但你只能局部角落里,但你永远不会知道从一个点出发可以回到原点。 当你有能力参与到OpenJDK贡献中之后,你才会发现原来地球是"圆的"。Class是对类抽象出来的对象,实例对象是对事物抽象出来的对象。

示例:
一个是对象user(user是Object对象 ) 一个是User (User是class对象);一个是从Object对象的角度去观察对象,一个是从Class对象的角度观察对象
package javase.opp_one;
import java.lang.reflect.Field;
public class User {
public int age ;
public String name ;
public static void main(String[] args) throws NoSuchFieldException {
// try {
// Field age = User.class.getClass().getDeclaredField("age");
// age.setAccessible(true);
// } catch (NoSuchFieldException e) {
// e.printStackTrace();
// }
// try {
// Field age = User.class.getDeclaredField("age");
// age.setAccessible(true);
// System.out.println(age);
// } catch (NoSuchFieldException e) {
// e.printStackTrace();
// }
Class<User> userClass = User.class;
User user = new User();
Class<? extends Class> aClass = userClass.getClass();
Class<? extends User> aClass1 = user.getClass();
System.out.println(userClass);
System.out.println(aClass1);
System.out.println(aClass);
aClass1.getDeclaredField("age") ;
// aClass.getDeclaredField("age") ; //此处报错执行不成功
Field age1 = user.getClass().getDeclaredField("age");
Field age = User.class.getDeclaredField("age");
//age.setAccessible(true);
// System.out.println(age);
}
}
结果示例:
class javase.opp_one.User class javase.opp_one.User class java.lang.Class Process finished with exit code 0
posted on 2022-04-21 20:01 RICH-ATONE 阅读(3771) 评论(0) 收藏 举报
浙公网安备 33010602011771号