]]>java 鍙嶅皠鏈哄埗緋誨垪錛堜簩錛変緥瀛?/title>http://www.aygfsteel.com/JFire/archive/2008/11/17/240958.htmlJFireJFireMon, 17 Nov 2008 06:30:00 GMThttp://www.aygfsteel.com/JFire/archive/2008/11/17/240958.htmlhttp://www.aygfsteel.com/JFire/comments/240958.htmlhttp://www.aygfsteel.com/JFire/archive/2008/11/17/240958.html#Feedback2http://www.aygfsteel.com/JFire/comments/commentRss/240958.htmlhttp://www.aygfsteel.com/JFire/services/trackbacks/240958.html
Camera鎺ュ彛錛氬畾涔変簡takePhoto()鏂規硶銆?br />
Camera01綾伙細涓縐嶇収鐩告満鐨勭被鍨嬶紝瀹炵幇Camera鎺ュ彛銆?br />
Camera02綾伙細鍙︿竴縐嶇収鐩告満鐨勭被鍨嬶紝瀹炵幇Camera鎺ュ彛銆?br />
Seller綾伙細鍗栫収鐩告満銆?br />
Customer綾伙細涔扮浉鏈猴紝鏈塵ain鏂規硶銆?br />
鎵鏈夌被閮芥斁鍦╟om鍖呴噷
紼嬪簭濡備笅錛?br />
public interface Camera {
//澹版槑鐓х浉鏈哄繀欏誨彲浠ユ媿鐓?br />
public void takePhoto();
}
public class Camera01 implements Camera {
private final int prefixs =300;//300涓囪薄绱?br />
private final double optionZoom=3.5; //3.5鍊嶅彉鐒?br />
public void takePhoto() {
System.out.println("Camera01 has taken a photo");
}
}
綾諱技鐨勬湁
public class Camera02 implements Camera {
private final int prefixs =400;
private final double optionZoom=5;
public void takePhoto() {
System.out.println("Camera02 has taken a photo");
}
}
欏懼鍑哄満浜?br />
public class Customer {
public static void main(String[] args){
//鎵懼埌涓涓敭璐у憳
Seller seller = new Seller();
//鍚戝敭璐у憳璇㈤棶涓ょ鐩告満鐨勪俊鎭?br />
seller.getDescription("com.Camera01");
seller.getDescription("com.Camera02");
//瑙夊緱Camera02姣旇緝濂斤紝鍙敭璐у憳鎷挎潵鐪?br />
Camera camera =(Camera)seller.getCamera("com.Camera02");
//璁╁敭璐у憳鎷嶅紶鐓ц瘯涓涓?br />
seller.testFuction(camera, "takePhoto");
}
}
Seller綾婚氳繃Java鍙嶅皠鏈哄埗瀹炵幇
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Seller {
//鍚戦【瀹㈡弿榪板晢鍝佷俊鎭?br />
public void getDescription(String type){
try {
Class cla = Class.forName(type);
//鐢熸垚涓涓疄渚嬪璞★紝鍦ㄧ紪璇戞椂鎴戜滑騫朵笉鐭ラ亾obj鏄粈涔堢被鍨嬨?br />
Object obj = cla.newInstance();
//鑾峰緱type綾誨瀷鎵鏈夊凡瀹氫箟綾誨彉閲忓強鏂規硶銆?br />
Field[] fileds = cla.getDeclaredFields();
Method[]methods = cla.getDeclaredMethods();
System.out.println("The arguments of this Camera is:");
for(int i=0;i<fileds.length;i++){
fileds[i].setAccessible(true);
//杈撳嚭綾誨彉閲忕殑瀹氫箟鍙妎bj瀹炰緥涓搴旂殑鍊?br />
System.out.println(fileds[i]+":"+fileds[i].get(obj));
}
System.out.println("The function of this Camera:");
for(int i=0;i<methods.length;i++){
//杈撳嚭綾諱腑鏂規硶鐨勫畾涔?br />
System.out.println(methods[i]);
}
System.out.println();
} catch (Exception e) {
System.out.println("Sorry , no such type");
}
}
//浣跨敤鍟嗗搧鐨勬煇涓姛鑳?br />
public void testFuction(Object obj,String function){
try {
Class cla = obj.getClass();
//鑾峰緱cla綾諱腑瀹氫箟鐨勬棤鍙傛柟娉曘?br />
Method m = cla.getMethod(function, null);
//璋冪敤obj涓悕涓篺unction鐨勬棤鍙傛柟娉曘?br />
m.invoke(obj, null);
} catch (Exception e) {
System.out.println("Sorry , no such function");
}
}
//鎷垮晢鍝佺粰欏懼
public Object getCamera(String type){
try {
Class cla = Class.forName(type);
Object obj = cla.newInstance();
return obj;
} catch (Exception e) {
System.out.println("Sorry , no such type");
return null;
}
}
}
紼嬪簭鍒版緇撴潫錛屼笅涓綃囨垜灝嗗紼嬪簭榪涜鍒嗘瀽錛屽茍琛ュ厖涓浜涘唴瀹廣?