當前位置:編程學習大全網 - 源碼下載 - 什麽是JAVA的反射機制?

什麽是JAVA的反射機制?

Java 的反射機制是使其具有動態特性的非常關鍵的壹種機制,也是在JavaBean 中廣泛應用的壹種特性。

運用JavaBean 的最常見的問題是:根據指定的類名,類字段名和所對應的數據,得到該類的實例,下面的壹個例子演示了這壹實現。

-|Base.java //抽象基類

|Son1.java //基類擴展1

|Son2.java //基類擴展2

|Util.java

/**

* @author metaphy

* create 2005-4-14 9:06:56

* 說明:

*/

(1)Base.java 抽象基類只是壹個定義

public abstract class Base {

}

(2)Son1.java /Son2.java 是已經實現的JavaBean

public class Son1 extends Base{

private int id ;

private String name ;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public void son1Method(String s){

System.out.println(s) ;

}

}

(3)

public class Son2 extends Base{

private int id;

private double salary;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public double getSalary() {

return salary;

}

public void setSalary(double salary) {

this.salary = salary;

}

}

(4)Util.java 演示了如何根據指定的類名,類字段名和所對應的數據,得到壹個類的實例

import java.lang.reflect.Method;

public class Util {

//此方法的最大好處是沒有類名Son1,Son2 可以通過參數來指定,程序裏面根本不用出現

public static Base convertStr2ServiceBean(String beanName,String fieldSetter,String paraValue){

Base base = null ;

try {

Class cls = Class.forName(beanName) ;

base = (Base)cls.newInstance() ;

Class[] paraTypes = new Class[]{String.class };

Method method = cls.getMethod(fieldSetter, paraTypes) ;

String[] paraValues = new String[]{paraValue} ;

method.invoke(base, paraValues) ;

} catch (Throwable e) {

System.err.println(e);

}

return base ;

}

public static void main(String[] args){

Son1 son1 =(Son1) Util.convertStr2ServiceBean("trying.reflect.Son1","setName","wang da sha");

System.out.println("son1.getName() :"+son1.getName()) ;

}

}

//調用結果:

//son1.getName() :wang da sha

  • 上一篇:算法源代碼集
  • 下一篇:軟件測試深入發展需要會些什麽
  • copyright 2024編程學習大全網