「java通过反射调用方法」java反射调用构造方法

博主:adminadmin 2022-11-21 18:06:06 64

本篇文章给大家谈谈java通过反射调用方法,以及java反射调用构造方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

通过java 反射 调用bean中的get方法

public String getValue(User u,String name){

String value = "";

Method[] m = u.getClass().getMethods();

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

if(("get"+name).toLowerCase().equals(m[i].getName().toLowerCase())){

try {

value = (String) m[i].invoke(u);

} catch (Exception e) {

e.printStackTrace();

}

}

}

return value;

}

如何通过java 反射 调用一个 含有 可变参数的 方法呢 ??

java反射调用可变参数的方法的方式是传入objects参数,如下代码:

public class Reflect {

 

    public static void main(String[] args) throws Exception {

        Class? clazz = Single.class;

        Single single = (Single) clazz.newInstance();

        ListString list = new ArrayListString(){

            private static final long serialVersionUID = 1L;

            {

                add("fuck");

                add("ni");

                add("mei");

            }

        };

         

        //获取method两种方式, 在method中 数组的的空间大小是可以随便写的不一定使用0

        /* 1 */

        Method method = clazz.getDeclaredMethod("method", Array.newInstance(Object.class, 0).getClass());

        /* 2 */

        method = clazz.getDeclaredMethod("method", (new Object[0]).getClass());

 

 

         

        //初始化参数

        /* 1 */

        Object objs = Array.newInstance(Object.class, 2);

        Array.set(objs, 0, list);

        Array.set(objs, 1, "23");

        method.invoke(single, objs);

         

        /* 2 */

        Object[] objects = {1, "fuck", list};

        method.invoke(single, new Object[]{ objects });

    }

}

 

class Single {

    public void method(Object... objs) {

        System.out.println(Arrays.deepToString(objs));

    }

}

 

结果:

[[fuck, ni, mei], 23]

[1, fuck, [fuck, ni, mei]]

java反射调用方法可以传非基本类型吗?如对象、接口

可以的,参数类型是没有限制的。通过以下代码可以证明。

接口:

public interface MyInterface {

    void print();

}

实现类:

public class MyInterfaceImpl implements MyInterface {

    @Override

    public void print() {

        System.out.println("interfaceImpl");

    }

}

通过反射调用方法:

import java.lang.reflect.Method;

public class Test {

    public static void main(String[] args) throws Exception {

        Test instance = Test.class.newInstance();

        Method method = Test.class.getDeclaredMethod("test", MyInterface.class);

        MyInterface myInterface = new MyInterfaceImpl();

        method.invoke(instance, myInterface);

    }

    public void test(MyInterface myInterface) {

        myInterface.print();

    }

}

「java通过反射调用方法」java反射调用构造方法

java 反射机制的几个调用方法

import java.lang.reflect.Method;

import java.lang.reflect.InvocationTargetException;

/**

* Created by IntelliJ IDEA.

* File: TestRef.java

* User: leizhimin

* Date: 2008-1-28 14:48:44

*/

public class TestRef {

public staticvoid main(String args[]) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {

Foo foo = new Foo("这个一个Foo对象!");

Class clazz = foo.getClass();

Method m1 = clazz.getDeclaredMethod("outInfo");

Method m2 = clazz.getDeclaredMethod("setMsg", String.class);

Method m3 = clazz.getDeclaredMethod("getMsg");

m1.invoke(foo);

m2.invoke(foo, "重新设置msg信息!");

String msg = (String) m3.invoke(foo);

System.out.println(msg);

}

}

class Foo {

private String msg;

public Foo(String msg) {

this.msg = msg;

}

public void setMsg(String msg) {

this.msg = msg;

}

public String getMsg() {

return msg;

}

public void outInfo() {

System.out.println("这是测试Java反射的测试类");

}

}

关于java通过反射调用方法和java反射调用构造方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-21,除非注明,否则均为首码项目网原创文章,转载请注明出处。