·´ÉäÊÇjavaÊdzéÏ󹤳§Ä£Ê½µÄÀûÆ÷£¬ÊÇIOCµÄ»ù´¡¡£
±¾ÎľÍÊÇ·ÖÏíÒ»ÏÂʹÓ÷´Éäµ÷Óú¯Êý·½·¨µÄ°ì·¨
ǰÆÚ×¼±¸¹¤×÷£¨°üÀ¨Ïà¹Ø¹¤¾ß»òËùʹÓõÄÔÁϵȣ©IntelliJ IDEAjavareflect ÏêϸµÄ²Ù×÷·½·¨»ò¾ßÌå²½Öè
Talk is cheap.Show me the code.
code:
package chapter3;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
* Created by MyWorld on 2016/3/16.
*/
public class RefactorInvokeMethodDemo {
public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, InstantiationException {
Class
Business business=businessClass.newInstance();
Method sayHelloMethod=businessClass.getDeclaredMethod("sayHello", String.class);
Object result=sayHelloMethod.invoke(business, "BaiduÎÄ¿â");
System.out.println(result);
}
}
class Business {
public String sayHello(String guestName) {
return "Hello ," + guestName;
}
}


Ö´ÐÐÉÏÃæµÄ´úÂ룬¿´¿´»áÊä³öµÄ½á¹ûÊÇʲô£¿
ÊDz»ÊÇÆÚ´ýµÄ¡°Hello ,BaiduÎĿ⡱
»¹ÊÇÕæÊÇ£¡£¡£¡
Ó¦¸ÃÊÇÂÍêÈ«Êǰ´apiÀ´µÄà¶

ÖªÆäÈ»£¬ÖªÆäËùÒÔÈ»ºó¡£
À´·ÖÎöÏ´úÂ룺
£¨1£©»ñȡһ¸öÀඨÒ壺Business.class
£¨2£©¸ù¾ÝÀඨÒ壬ʵÀý»¯Ò»¸öʵÀýbusiness£ºbusinessClass.newInstance();
£¨3£©¸ù¾ÝÀඨÒ壬ʹÓÃapi getDeclaredMethod»ñȡָ¶¨µÄMethod
£¨4£©µ÷ÓûñÈ¡µÄMethod:sayHelloMethod.invoke(business, "BaiduÎÄ¿â");

Äܲ»µ÷ÓÃprivateµÄ·½·¨ÄØ£¿
ÊÇ¿ÉÒԵġ£
Show the code.
Code:
private String sayHello(String guestName) {
return "Hello ," + guestName;
}

Ö´ÐÐÉÏÃæµÄ´úÂ룬¿´¿´ÊÇ·ñÄܵ÷Óóɹ¦
±¨´íÁË¡£¡£¡£
´íÎóÐÅÏ¢£º
Exception in thread "main" java.lang.IllegalAccessException: Class chapter3.RefactorInvokeMethodDemo can not access a member of class chapter3.Business with modifiers "private"
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65)
at java.lang.reflect.Method.invoke(Method.java:588)
at chapter3.RefactorInvokeMethodDemo.main(RefactorInvokeMethodDemo.java:15)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

Ŷ¡£»¹ÐèÒªÉèÖÃÒ»¸öµØ·½,¸ü¸Ä·½·¨µÄprivateÊôÐÔ
Code:
Method sayHelloMethod=businessClass.getDeclaredMethod("sayHello", String.class);
sayHelloMethod.setAccessible(true);

Ö´ÐÐ×îеĴúÂ룬¿´¿´ÊÇ·ñÕý³£ÁË¡£
ok£¬¿´µ½ÊìϤµÄÊä³ö½á¹ûÁË£¡
OÁË£¡

- java·´Éäµ÷Ó÷½·¨-java-±à³Ì
- ÇáËÉÓä¿ìµØÓÃJavaµ÷ÓÃC´úÂë-java-±à³Ì
- java±¨±í²å¼þÖÐÈçºÎ½øÐÐ×Ô¶¨ÒåÈ¡Êý-java-±à
- 01.¼ÆËã»úÈí¼þ¼°JavaÓïÑԵı³Ó°ºÍ·¢Õ¹ÀúÊ·-
- java»ñÈ¡Îļþ´óС-java-±à³Ì
- Java»·¾³±äÁ¿ÔõôÉèÖÃ-java-±à³Ì
- Java±¨±í²å¼þ£ºFineReport ±íµ¥Ê½Ö÷×Ó±í-ja
- ÔõôÅäÖõçÄÔ»·¾³±äÁ¿-java-±à³Ì
- ͼ½âÅäÖÃJAVA»·¾³±äÁ¿-java-±à³Ì
- ÃüÁî¿òÔËÐÐJavaÎļþ-java-±à³Ì
- ÆÀÂÛÁÐ±í£¨ÍøÓÑÆÀÂÛ½ö¹©ÍøÓѱí´ï¸öÈË¿´·¨£¬²¢²»±íÃ÷±¾Õ¾Í¬ÒâÆä¹Ûµã»ò֤ʵÆäÃèÊö£©
-
