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 阅读(3684) 评论(0) 编辑 收藏 举报