亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么我后面得訪問方法輸出不了????加粗那段

package com.imooc;


import java.lang.reflect.Field;

import java.lang.reflect.Method;




public class Main_02 {


public static void main(String[] args) {

Example_02 ex = new Example_02();

Class c = ex.getClass();

Field[] fd = c.getDeclaredFields();

for(int i=0;i<fd.length;i++){

Field field = fd[i]; //歷遍成員變量

//獲得成員名稱

System.out.println("成員名稱:"+field.getName());

Class fieldType = field.getType(); //獲得成員變量類型

System.out.println("成員變量類型:"+fieldType);

boolean isTurn = true;

while(isTurn){

try {

isTurn = false;

System.out.println("修改值前為:"+field.get(ex));

if(fieldType.equals(int.class)){

System.out.println("利用方法setint()修改成員變量的值");

field.setInt(ex, 168);

}else if(fieldType.equals(float.class)){

System.out.println("利用setFloat()修改成員變量得值");

field.setFloat(ex, 99.9F);

}else if(fieldType.equals(boolean.class)){

System.out.println("利用setBoolean()修改成員變量得值");

field.setBoolean(ex,true);

}else if(field.equals(String.class)){

System.out.println("用set()方法修改成員變量得值");

field.set(ex,"MWQ");

}else{

System.out.println("用set()方法修改成員變量得值");

field.set(ex,"RSF");

}

System.out.println("修改值后得成員變量"+field.get(ex));

}?

catch (Exception e) {

System.out.println("在設置成員變量時拋出異常,"+"下面執行setAccessible()方法");

field.setAccessible(true);

isTurn = true;

}

}

System.out.println();

}

Method[] dm = c.getDeclaredMethods();

for(int i=0;i<dm.length;i++){

Method m = dm[i];

System.out.println("名稱為:"+m.getName());

System.out.println("是否允許帶有可變數量得參數:"+m.isVarArgs());

System.out.println("入口參數類型為:");

Class[] pt = m.getParameterTypes();

for(int j=0;j<pt.length;j++){

System.out.println(""+pt[j]);

}

System.out.println("返回值類型為:"+m.getReturnType());

System.out.println("可能拋出得異常類型有:");

Class[] et = m.getExceptionTypes();

for(int j=0;j<et.length;j++){

System.out.println(""+et[j]);

}

boolean isTurn = true;

while(isTurn){

try{

isTurn = false;

if("staticMethod".equals(m.getName()))

m.invoke(ex);

else if("publicMethod".equals(m.getName()))

System.out.println("返回值為:"+m.invoke(ex, 168));

else if("privateMethod".equals(m.getName()))

System.out.println("返回值為:"+m.invoke(ex,"5",7));

else if("privateMethod".equals(m.getName())){

Object[] o = new Object[]{new String[]{"Q","W","E"}};

//上面定義二維數組

System.out.println("返回類型:"+m.invoke(ex, o));

}

}catch (Exception e) {

System.out.println("在執行方法時可能拋出異常,所以下面執行setAccessible()方法");

m.setAccessible(true); //設置允許訪問

isTurn = true;

}

}

System.out.println();

}

}


}






正在回答

2 回答

一體式的代碼太繁瑣了,
所以我把兩個方法重構了,
改了一點點,
除了那個二維數組沒看懂,其他的都可以運行,
二維數組那個方法請發一下,
不然無法理解,不知道方法體

0 回復 有任何疑惑可以回復我~
#1

RSF 提問者

非常感謝!
2018-07-23 回復 有任何疑惑可以回復我~

import java.lang.reflect.*;
public class Main_02 {
public static void getParameter(Object ex){
Class c = ex.getClass();
Field[] fd = c.getDeclaredFields();
for(int i=0;i<fd.length;i++){
Field field = fd[i];
System.out.println("成員名稱:"+field.getName());
Class fieldType = field.getType();
System.out.println("成員變量類型:"+fieldType);
System.out.println();
}
}
public static void getMethods(Object ex){
Class c=ex.getClass();
Method[] dm = c.getDeclaredMethods();
for(int i=0;i<dm.length;i++){
Method m = dm[i];
System.out.println("方法"+(i+1)+"名稱為:"+m.getName());
System.out.println("是否允許帶有可變數量得參數:"+m.isVarArgs());
System.out.print("入口參數類型為:");
Type[] pt = m.getParameterTypes();
for(int j=0;j<pt.length;j++){
System.out.print(pt[j]+",");
}
System.out.println("\n返回值類型為:"+m.getReturnType());
System.out.print("可能拋出得異常類型有:");
Type[] et = m.getGenericExceptionTypes();
for(int j=0;j<et.length;j++){
System.out.print(et[j]+",");
}
System.out.println();
while(true){
try{
System.out.print("執行結果:");
if("staticMethod".equals(m.getName()))
m.invoke(ex);
else if("publicMethod".equals(m.getName()))
System.out.print("返回值為:"+m.invoke(ex, 168));
else if("privateMethod".equals(m.getName()))
System.out.print("返回值為:"+m.invoke(ex,"5",7));
System.out.println("(無異常。)");
}catch(IllegalAccessException E){
System.out.println("在執行方法時拋出訪問權限異常,所以下面執行setAccessible()方法");
m.setAccessible(true);
continue;
}catch (Exception e) {
System.out.println(e.getMessage());
}
System.out.println();
break;
}
}
}
public static void main(String[] args) {
Example_02 ex = new Example_02();
System.out.println("**********常量列表**********");
Main_02.getParameter(ex);
System.out.println("**********方法列表**********");
Main_02.getMethods(ex);
}
}
http://img1.sycdn.imooc.com//5b554b740001d2d007201280.jpg

0 回復 有任何疑惑可以回復我~
#1

yyz要學java

你好 請問下那個是什么軟件 能在手機上編程的
2018-08-12 回復 有任何疑惑可以回復我~
#2

舊夢 回復 yyz要學java

aide
2018-08-12 回復 有任何疑惑可以回復我~
#3

yyz要學java 回復 舊夢

我這里好像只支持jquery和JavaScript
2018-08-13 回復 有任何疑惑可以回復我~
#4

舊夢 回復 yyz要學java

pan自己.baidu.com/s/1FgkMlV刪AWoIByUyiz0gJB2w 密碼:ytm7
2018-08-13 回復 有任何疑惑可以回復我~
查看1條回復

舉報

0/150
提交
取消

為什么我后面得訪問方法輸出不了????加粗那段

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號