美文网首页
java的反射的一些基本用法

java的反射的一些基本用法

作者: feng_wy | 来源:发表于2017-05-16 22:13 被阅读10次

    今天看了一个Method.invoke(Object var1, Object... var2)的方法,记录一下

    public classTest {

    private staticString getstr() {

    return"wywywy";

    }

    publicString getMyname() {

    return"my name is wy";

    }

    publicString getInfo(String[] objects) {

    StringBuilder stringBuilder =newStringBuilder();

    for(inti =0; i < objects.length; i++) {

    Log.e(getClass().getName(), objects[i].toString());

    }

    return"i am is a shuai ge"+String.valueOf(objects.length-1);

    }

    }

    第二个类

    public classMainActivityextendsAppCompatActivity {

    @Override

    protected voidonCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    try{

    try{

    try{

    //1.

    //反射加载类

    Class tClass = Class.forName("com.example.wy.mytested.Test");

    //得到方法

    Method method = tClass.getDeclaredMethod("getstr");

    //设置私有的方法也可以访问

    method.setAccessible(true);

    //如果是静态的可以直接传空

    String a = (String) method.invoke(null);

    Log.e(getClass().getName(), a);

    //2.

    Method method1 = tClass.getMethod("getMyname");

    Object o =null;

    try{

    //如果不是静态的要传这个 方法的类的对象

    o = method1.invoke(tClass.newInstance());

    }catch(InstantiationException e) {

    e.printStackTrace();

    }

    Log.e(getClass().getName(),"2-------------"+o);

    //3.

    Method method2 = tClass.getMethod("getInfo");

    try{

    //第二个参数是方法所需要的参数

    Object s2=  method2.invoke(null,newString[]{"a","b","c"});

    Log.e(getClass().getName(),(String)s2);

    }catch(Exception e) {

    e.printStackTrace();

    }

    }catch(IllegalAccessException e) {

    e.printStackTrace();

    }catch(InvocationTargetException e) {

    e.printStackTrace();

    }

    }catch(NoSuchMethodException e) {

    e.printStackTrace();

    }

    }catch(ClassNotFoundException e) {

    e.printStackTrace();

    }

    }

    }

    相关文章

      网友评论

          本文标题:java的反射的一些基本用法

          本文链接:https://www.haomeiwen.com/subject/remxmttx.html