第一種:通過forName()方法;
創(chuàng)新互聯(lián)是一家專業(yè)從事成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)頁設(shè)計的品牌網(wǎng)絡(luò)公司。如今是成都地區(qū)具影響力的網(wǎng)站設(shè)計公司,作為專業(yè)的成都網(wǎng)站建設(shè)公司,創(chuàng)新互聯(lián)依托強(qiáng)大的技術(shù)實(shí)力、以及多年的網(wǎng)站運(yùn)營經(jīng)驗,為您提供專業(yè)的成都網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)及網(wǎng)站設(shè)計開發(fā)服務(wù)!
第二種:類.class;
第三種:對象.getClass()。
舉例如下:
package
test;
public class Demo{
public static void
main(){
Class? c1 = null;
Class? c2 =
null;
Class? c3 =
null;
//三種反射用實(shí)例化方式
try{
//最常用的一種形式
c1 =
Class.forName("test.X");
}catch(ClassNotFoundException
e){
e.printStackTrace();
}
//通過Object類中的方法實(shí)例化
c2
= new X().getClass();
//通過類.class實(shí)例化
c3 =
X.class;
System.out.println("類名:" + c1.getName());
//得到類名
System.out.println("類名:" + c2.getName());
//得到類名
System.out.println("類名:" + c3.getName());
//得到類名
}
}
1.就是說根據(jù)你傳進(jìn)去的對象類型返回相應(yīng)的代理。這個不是在靜態(tài)編譯時決定的, 而是運(yùn)行時決定的,所以叫做動態(tài)。this指的是當(dāng)前InvocationHandler對象,也就是new MyInvocationHandler()出來的。
2.執(zhí)行RealSubject中的say方法,因為這個時候?qū)嶋H的對象是bind(new RealSubject())。
3.沒有調(diào)用自己啊。
*.properties文件內(nèi)容如下:
MyClass=com.it.MyClass
InputStream ins = new FileInputStream(new File("*.properties"));
Properties props = new Properties();
props.load(ins);
String clazzName = props.getProperty("String key");
Object clazz = Class.forName(clazzName).newInstance();
MyClass myClass = (MyClass) clazz;
調(diào)用myClass的方法、函數(shù)即可.