1、獲取乙個class物件
class c = this.getclass();//
reflectimplement r = new reflectimplement();//通過類例項獲得
class c1 = r.getclass();
class subclass = c1.getsuperclass();//通過類例項獲得父類物件
class c2 = reflectimplement.class;//通過類名.class獲得
class c3 = class.forname("reflectimplement");//通過類名字串獲得
2、獲得類名稱
c1.getname();
3、修飾符modifier
modifier.tostring(c2.getmodifiers())//類的修飾符
field fields1 = c2.getdeclaredfields();//該方法訪問
modifier.tostring(field1[0].getmodifiers())
4、檢索類介面
class inf = c2.getinte***ces();
5、檢索類所有成員
field fields = c2.getfields();//該方法只能訪問公共變數
for(int i = 0; i < fields.length; i++)
field fields1 = c2.getdeclaredfields();//該方法訪問所有變數
6、檢索類的建構函式
constructor constructor = c1.getdeclaredconstructors();
for(int i = 0; i < constructor.length; i++)
}7、檢索類的方法
method methods = c1.getdeclaredmethods();
for(int i = 0; i < methods.length; i++)
-------------------------------------------高階用法案例---------------------------------------
1. 得到某個物件的屬性-
/*
owner 是乙個類例項 a a。
*/
public object getproperty(object owner, string fieldname)
field field = class1.getfield(fieldname);//通過class得到類宣告的屬性。
object object = field.get(owner);//通過物件得到該屬性的例項,如果這個屬性是非公有的,這裡會報illegalacces***ception。
system.out.print(object);
}return null; }/*
rest是乙個類例項 b b
*/public boolean isvalidate(restaurant(one class) rest)
} catch (exception e)
}return true;
}得到類的靜態屬性
public object getstaticproperty(object owner, string fieldname)
//執行某物件的方法
public object invokemethod(object owner, string methodname, object args) throws exception
method method = ownerclass.getmethod(methodname, argsclass);//查詢匹配的方法
return method.invoke(owner, args);
return method.invoke(null, args);//如果是靜態方法,則用null,因不需要借助例項物件
}//新建例項物件
class newoneclass
=class.forname(classname);
class argsclass
=new
class[args.length];
for(
inti =0
, j=
args.length; i
<
j; i
++)
constructor cons
=newoneclass.getconstructor(argsclass);
return
cons.newinstance(args); //新建例項。
如果不需要引數,可以直接使用newoneclass.newinstance()來實現。
java反射機制
private string getmethod catch instantiationexception e1 catch illegalacces ception e1 try catch illegalargumentexception e catch illegalacces ception...
Java反射機制
1.反射是指程式在執行時,可以通過反射機制拿到任何乙個類的內部所有資訊。2.可以獲得類的所有屬性資訊,包括私有屬性,並對其進行操作 3.可以獲得物件所對應的類 4.可以拿到本類,或父類中的方法,並且對其進行操作。常用方法 getname 獲得類對應的名稱 getdeclaredfields 獲得類中...
java 反射機制
當我們編寫的類生成的位元組碼檔案中的二進位制位元組流被類載入器載入到記憶體當中時,會在方法區產生乙個class物件,作為訪問這些類資訊的入口。假如我們編寫乙個person類,獲取class物件一般有3種方式 class有4個獲取字段資訊的方法,包括靜態變數和例項變數 所有的public欄位,包括其父...