日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

反射机制(1)

發布時間:2024/10/12 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 反射机制(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

改反射把所有的代碼都貼上去

首先寫3個java類已經一個接口

package com.hp.test;

public interface Office {
public void print();

}

package com.hp.test;

public class Excel implements Office {
public void print(){
System.out.println("這是excal");
}

}

package com.hp.test;

public class ppt {

public void print(String name ,String time){
System.out.println(name+"ppt開始執行----"+time+"ppt執行結束");
}

}

package com.hp.test;

public class Word implements Office{
public void print(){
System.out.println("word開始執行");
}

}

第一個classtest.java類

package com.hp.test;

public class ClassTest {
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
// 創建TOO類的對象
Too too = new Too();

//這個too類本身又是誰的對象
//所有的類本身都屬于claas類的對象(類類型)

//如何創建一個類的類類型
//通過class方法,,每個類都有一個隱藏的靜態成員變量class
Class c1 = Too.class;
//通過class.formName
Class c2 = Class.forName("com.hp.test.Too");
//通過類對象的getclass()方法來獲取類的類類型
Class c3 = too.getClass();
System.out.println(c1=c2);
System.out.println(c2=c3);
//能不能通過類的類類型,能夠獲得一個類的對象
Too too2 = (Too) c1.newInstance();
}

}
class Too{
public void print(){
System.out.println("too執行");
}
}

?

第二個javatest2.java類

package com.hp.test;

public class ClassTest2 {
public void print(String office){
if(office.equals("Word")){
Word word = new Word();
word.print();
}
if(office.equals("Excel")){
Excel excel = new Excel();
excel.print();
}
}

public static void main(String[] args) {
ClassTest2 ct2 = new ClassTest2();
ct2.print("Excel");
ct2.print("Word");
}
}

第三個ClassTest3.java類

package com.hp.test;

public class ClassTest3 {
// 反射實現運行時加載,不需要一次性全部加載完成所以的類的事例
public void print(String office) throws ClassNotFoundException,
InstantiationException, IllegalAccessException {
if (office.equals("Word")) {
Class c1 = Class.forName("com.hp.test." + office);
Office off = (Office) c1.newInstance();
off.print();
}
if (office.equals("Excel")) {
Class c1 = Class.forName("com.hp.test." + office);
Office off = (Office) c1.newInstance();
off.print();
}
}

public static void main(String[] args) throws ClassNotFoundException,
InstantiationException, IllegalAccessException {
ClassTest3 ct3 = new ClassTest3();
ct3.print("Word");
ct3.print("Excel");
}

}

?

第四個ClassTest4.java

package com.hp.test;

public class ClassTest4 {
public void print() {
Class c1 = int.class;
Class c2 = String.class;
Class c3 = Double.class;
Class c4 = double.class;
Class c5 = void.class;

//獲取反射類的類類型的原始名字
System.out.println(c1.getName());
System.out.println(c2.getName());
System.out.println(c3.getName());
System.out.println(c4.getName());
System.out.println(c5.getName());
System.out.println(c2.getSimpleName());

}
public static void main(String[] args) {
ClassTest4 ct4 = new ClassTest4();
ct4.print();
}

}

第五個ClassTest5.java

package com.hp.test;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class ClassTest5 {


public void print() throws InstantiationException, IllegalAccessException, NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException{

//獲得word類的類型
Class c1 = Word.class;
Word word = (Word) c1.newInstance();
Method method =c1.getMethod("print");
method.invoke(word);

//獲得ppt類的類型
Class c2 = ppt.class;
Object obj = c2.newInstance();
Method me = c2.getMethod("print", new Class[]{String.class,String.class});
me.invoke(obj,new Object[]{"2009","2010年"});


}

public static void main(String[] args) throws InstantiationException, IllegalAccessException, NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException {
ClassTest5 ct5 = new ClassTest5();
ct5.print();
}

}

?

轉載于:https://www.cnblogs.com/lyh-8/p/6085728.html

總結

以上是生活随笔為你收集整理的反射机制(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。