Java 反射和映射
Java 反射和映射
什么是反射?等同于映射嗎?
完全不相關的。反射是一個機機制,映射是一種關系。 反射機制是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。
映射是一種對應關系,在很多的情況下,表示一種存在的聯系而已。反射能做什么
- 在運行時判斷任意一個對象所屬的類;
- 在運行時構造任意一個類的對象;
- 在運行時判斷任意一個類所具有的成員變量和方法;
- 在運行時調用任意一個對象的方法;
- 生成動態代理。
通俗的講,當某些API沒有暴露出來,但是我們又需要用到其中的某些方法屬性就需要了。
ForExample:
//假如JavaBean沒有暴露出構造方法package mypackage;public class JavaBean {private int age;private String name;public String adress;public int getAge() {return age;}private void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAdress() { 22 return adress;}public void setAdress(String adress) {this.adress = adress;}}//我們可以通過Class類來獲取實例對象package mypackage;import java.lang.reflect.Method;public class JNITest {public static native void getStringFromC();public static void main(String[] args) {try {//獲取類Class<?> class1 = Class.forName("mypackage.JavaBean");//獲取所有的公共的方法Method[] methods = class1.getMethods() ;for (Method method : methods) {System.out.println( method );}//獲取實例類Object object = class1.newInstance();JavaBean javaBean = (JavaBean)object;javaBean.setName("Hellow");System.out.println("--->"+javaBean.getName());} catch (Exception e) {e.printStackTrace();} } }運行結果: public java.lang.String mypackage.JavaBean.getName() public void mypackage.JavaBean.setName(java.lang.String) public java.lang.String mypackage.JavaBean.getAdress() public void mypackage.JavaBean.TestMethod() public int mypackage.JavaBean.getAge() public void mypackage.JavaBean.setAdress(java.lang.String) public final void java.lang.Object.wait() throws java.lang.InterruptedException public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException public boolean java.lang.Object.equals(java.lang.Object) public java.lang.String java.lang.Object.toString() public native int java.lang.Object.hashCode() public final native java.lang.Class java.lang.Object.getClass() public final native void java.lang.Object.notify()
總結
以上是生活随笔為你收集整理的Java 反射和映射的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 相位和群时延的ADS仿真
- 下一篇: java美元兑换,(Java实现) 美元