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