遍匈 / Java園殻将刮 /

霧霧Java郡符字崙

Person p=new Person();
宸頁焚担?輝隼頁糞箭晒匯倖斤嵆阻。辛頁宸嶽糞箭晒斤嵆議圭隈贋壓匯倖諒籾?椎祥頁駅倬勣岑祇窃兆嘉辛參糞箭晒万議斤嵆?宸劔厘断壓哘喘圭中祥氏鞭欺尫崙。椎担嗤短嗤宸劔匯嶽圭塀?斑厘断音岑祇宸倖窃議窃兆祥辛參糞箭晒万議斤嵆椿?Thank Goodness?侑雛厘断喘議頁java?java祥戻工阻宸劔議字崙。
  1. java殻會壓塰佩扮辛參資誼販採匯倖窃議忖准鷹佚連?淫凄窃議俐蔑憲(public、static吉)、児窃(階窃、幻窃)、糞孖議俊笥、忖粁才圭隈吉佚連。
  2. java殻會壓塰佩扮辛參功象忖准鷹佚連栖幹秀乎窃議糞箭斤嵆?個延斤嵆議忖粁坪否才距喘斤嵆圭隈。
宸劔議字崙祥出郡符室宝。辛參?嵆高僥嶄議郡符?祥崧厘断孚承徨?承徨嶄嗽竃孖匯倖徭失(曳囓辛嬬音湊如輝?徽頁怎參燕器賠萱吭房阻)。郡符室宝戻工阻匯嶽宥喘議強蓑銭俊殻會怏周議圭隈?音駅勣委殻會侭俶勣議朕炎窃啣園鷹欺坿殻會嶄?貫遇聞誼厘断辛參幹秀痩試議殻會。

Java議郡符字崙頁宥狛郡符API栖糞孖議?万塋俯殻會壓塰佩狛殻嶄函誼販採匯倖厮岑兆各議窃議坪何佚連。郡符API了噐java.lang.reflect淫嶄。麼勣淫凄參和叱窃?
  1. Constructor窃?喘栖宙峰匯倖窃議更夛圭隈。
  2. Field窃?喘栖宙峰匯倖窃議撹埀延楚。
  3. Method窃?喘栖宙峰匯倖窃議圭隈。
  4. Modifer窃?喘栖宙峰窃坪光圷殆議俐蔑憲。
  5. Array?喘栖斤方怏序佩荷恬。
Constructor,Field,Method宸眉倖窃脅頁JVM(倡亭字)壓殻會塰佩扮幹秀議?喘栖燕幣紗墮窃嶄屢哘議撹埀。宸眉倖窃脅糞孖阻java.lang.reflect.Member俊笥?Member俊笥協吶阻資函窃撹埀賜更夛圭隈吉佚連議圭隈。勣聞喘宸乂郡符API?駅倬枠誼欺勣荷恬議斤嵆賜窃議Class窃議糞箭。宥狛距喘Class窃議newInstance圭隈(峪嬬距喘窃議潮範更夛圭隈)辛參幹秀窃議糞箭。宸劔嗤蕉尫來?厘断辛參枠喝窃議Class糞箭資函窃俶勣議更夛圭隈?隼朔壓旋喘郡符栖幹秀窃議匯倖糞箭。

匯. 資函窃議更夛圭隈議Constructor斤嵆(方怏)

  • Constructor[] getDeclaredConstructors()?卦指厮紗墮窃蕗苧議侭嗤議更夛圭隈議Constructor斤嵆方怏。
  • Constructor getDeclaredConstructor(Class[] paramTypes)?卦指厮紗墮窃蕗苧議峺協更夛圭隈議Constructor斤嵆?paramTypes峺協阻歌方窃侏。
  • Constructor[] getConstructors()?卦指厮紗墮窃蕗苧議侭嗤議public窃侏議更夛圭隈議Constructor斤嵆方怏。
  • Constructor getConstructor(Class[] paramTypes)?卦指厮紗墮窃蕗苧議峺協議public窃侏議更夛圭隈議Constructor斤嵆?paramTypes峺協阻歌方窃侏。
泌惚蝶倖窃嶄短嗤協吶更夛圭隈?及匯倖才及眉倖圭隈卦指議方怏嶄峪嗤匯倖圷殆,祥頁髪福議更夛圭隈?泌惚蝶倖窃嶄峪協吶阻嗤歌方議更夛痕方?遇短嗤協吶髪福更夛痕方?及匯倖才及眉倖圭隈卦指議方怏嶄音淫根髪福議更夛圭隈。

箭徨?
import java.lang.reflect.*;
public class DumpMethods {
public static void main(String[] args) {
try{
if(args.length<1){
System.out.println("萩補秘頼屁議窃兆?");
return;
}
Class strClass=Class.forName(args[0]);
//殊沫揮嗤峺協歌方議更夛圭隈
Class[] strArgsClass=new Class[]{ byte[].class,String.class};
Constructor constructor=strClass.getConstructor(strArgsClass);
System.out.println("Constructor:"+constructor.toString());

//距喘揮嗤歌方議更夛圭隈幹秀糞箭斤嵆object
byte[] bytes="java祥匍凍儺".getBytes();
Object[] strArgs=new Object[]{bytes,"gb2312"};
Object object=constructor.newInstance(strArgs);
System.out.println("Object"+object.toString());
}catch(Exception e){
e.printStackTrace();
}
}
}

屈. 資函窃撹埀延楚議Field斤嵆(方怏)

  • Field[] getDeclaredFields()?卦指厮紗墮窃蕗苧議侭嗤撹埀延楚議Field斤嵆方怏?音淫凄貫幻窃写覚議撹埀延楚。
  • Field getDeclaredField(String name)?卦指厮紗墮窃蕗苧議侭嗤撹埀延楚議Field斤嵆?音淫凄貫幻窃写覚議撹埀延楚?歌方name峺協撹埀延楚議兆各。
  • Field[] getFields()?卦指厮紗墮窃蕗苧議侭嗤public侏議撹埀延楚議Field斤嵆方怏?淫凄貫幻窃写覚議撹埀延楚。
  • Field getField(String name)?卦指厮紗墮窃蕗苧議侭嗤撹埀延楚議Field斤嵆?淫凄貫幻窃写覚議撹埀延楚?歌方name峺協撹埀延楚議兆各。
箭徨?
import java.lang.reflect.*;
public class ReflectTest {
private String name;
private String age;
public ReflectTest(String name,String age){
this.name=name;
this.age=age;
}

public static void main(String[] args) {
// TODO 徭強伏撹圭隈贋功
try{
ReflectTest rt=new ReflectTest("zhanghandong","shiba");
fun(rt);
}catch(Exception e){
e.printStackTrace();
}

}
public static void fun(Object obj) throws Exception{
Field[] fields=obj.getClass().getDeclaredFields();
System.out.println("紋算岻念議:");
for(Field field:fields){
System.out.println(field.getName()+"="+field.get(obj));
if(field.getType().equals(java.lang.String.class)){
field.setAccessible(true); //駅倬譜崔葎true嘉辛參俐個撹埀延楚
String org=(String)field.get(obj);
field.set(obj,org.replaceAll("a","b"));
}

}
System.out.println("紋算岻朔議?");
for(Field field:fields){
System.out.println(field.getName()+"="+field.get(obj));
}
}
}

眉. 資函窃議圭隈議Method斤嵆(方怏)

  • Method[] getDeclaredMethods()?卦指厮紗墮窃蕗苧議侭嗤圭隈議Method斤嵆方怏?音淫凄貫幻窃写覚議圭隈。
  • Method getDeclaredMethod(String name,Class[] paramTypes)?卦指厮紗墮窃蕗苧議侭嗤圭隈議Method斤嵆?音淫凄貫幻窃写覚議圭隈?歌方name峺協圭隈議兆各?歌方paramTypes峺協圭隈議歌方窃侏。
  • Method[] getMethods()?卦指厮紗墮窃蕗苧議侭嗤圭隈議Method斤嵆方怏?淫凄貫幻窃写覚議圭隈。
  • Method getMethod(String name,Class[] paramTypes)?卦指厮紗墮窃蕗苧議侭嗤圭隈議Method斤嵆?淫凄貫幻窃写覚議圭隈?歌方name峺協圭隈議兆各?歌方paramTypes峺協圭隈議歌方窃侏。

膨. 殊沫窃議凪麿佚連

  • int getModifiers()?卦指厮紗墮窃議俐蔑憲議屁侘炎紛峙。
  • Package getPackage()?卦指厮紗墮窃議淫兆。
  • Class getSuperclass()?卦指厮紗墮窃議幻窃議Class糞箭。
  • Class [] getInterfaces()?卦指厮紗墮窃糞孖議俊笥議Class斤嵆方怏。
  • boolean isInterface()?卦指厮紗墮窃頁倦頁俊笥。
郡符議孔嬬載膿寄?徽頁聞喘音輝辛嬬氏髪泣寄噐單泣?郡符聞旗鷹貸辞詞岱?氏揮栖略擦議諒籾。

AltStyle によって変換されたページ (->オリジナル) /