反射reflection(1)
java属于静态语言,但是java也被称之为准动态语言,即利用反射的机制获得类似动态语言的特性
静态语言:C、C++、Java
动态语言:C#、PHP、Python、JavaScript
Reflection(反射)是java被视为动态语言的关键,反射机制允许程序在执行期借助于ReflectionAPI取得任何类的内部信息,并能直接操作任意对象的内部属性和方法
正常方式:引入需要的包类名称-->通过new实例化-->取得实例化对象
反射方式:实例化对象-->getClass()方法-->得到完整的包类名称
package com.reflection; //什么叫反射 public class Test01 { public static void main(String[] args) throws ClassNotFoundException { //通过反射获取类的class对象 Class c1 = Class.forName("com.reflection.User"); System.out.println(c1); Class c2 = Class.forName("com.reflection.User"); Class c3 = Class.forName("com.reflection.User"); //一个类在内存中只有一个Class对象 //一个类被加载后,类的整个结构都会被封装在class对象中 System.out.println(c1.hashCode()); System.out.println(c2.hashCode()); System.out.println(c3.hashCode());//c1、c2、c3的hashCode都是一样的 } } class User{ private String name; private int age; public User(){} public User(String name,int age){ this.name = name; this.age = age; } public void setName(String name){ this.name = name; } public void setAge(int age){ this.age =age; } public String getName(){ return name; } public int getAge(){ return age; } private void test(){} @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
浙公网安备 33010602011771号