Android Method的使用方法


 

首先新建一個用於實驗的類

public class TestClass {

    /**
     * 公共方法,沒有參數,沒有返回值
     */
    public void test() {
        System.out.println("test");
    }

    /**
     * 公共方法
     * @param str
     * @return
     */
    public String testReturnString(String str) {
        return str;
    }

    /**
     * 私有方法
     * @return
     */
    private String testReturnString1() {
        System.out.println("fail");
        return "fail";
    }
}

然后下一步就是要調用TestClass中的方法了

try {
            /*需要用到的類*/
            Class simpleClass = TestClass.class;
            /*實例需要用的類*/
            Object simpelObject = simpleClass.newInstance();
            //取得該類下的方法
            //第一個參數是方法名,第二個參數是該方法的"參數"類型
            Method method = simpleClass.getDeclaredMethod("test",
                    null);
            //調用該方法
            //第一個參數不太了解,第二個參數是參數值
            Object o = method.invoke(simpelObject, null);
            System.out.println("return:::::" + o);
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InstantiationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

上面的是沒有參數沒有返回值的,那帶參數的方法如何調用呢?

try {
            /*需要用到的類*/
            Class simpleClass = TestClass.class;
            /*實例需要用的類*/
            Object simpelObject = simpleClass.newInstance();
            /*參數類型數組*/
            Class[] program =new Class[]{String.class};
            
            //取得該類下的方法
            //第一個參數是方法名,第二個參數是該方法的"參數"類型
            Method method = simpleClass.getDeclaredMethod("test",
                    program);
            //調用該方法
            //第一個參數不太了解,第二個參數是參數值
            Object o = method.invoke(simpelObject, "test value");
            System.out.println("return:::::" + o);
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InstantiationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

如果是訪問私有方法,只需要設置method.setAccessible(true);就可以了

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM