「java反射取值」java反射获取方法以及调用方法

博主:adminadmin 2022-11-27 04:05:08 61

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

本文目录一览:

大佬告诉我java 反射如何获取成员变量的值

下例演示了通过反射获取 Test 类对象 t 的 iVal, strVal 成员变量的值:

import java.lang.reflect.Field;

class Test {

private int iVal;

private String strVal;

public Test(int iVal, String strVal) {

this.iVal = iVal;

this.strVal = strVal;

}

}

public class App {

public static void main(String[] args) {

// 创建一个 Test 对象

Test t = new Test(123, "Hello");

// 获取对象 t 的 Class 

Class? tt = t.getClass();

try {

// 获取 Test 类的 iVal 字段 Field

Field field = tt.getDeclaredField("iVal");

// 设置可访问

field.setAccessible(true);

// 获取 iVal 的值

int val = field.getInt(t);

System.out.println(val);

Field strValField = tt.getDeclaredField("strVal");

strValField.setAccessible(true);

String strVal = (String)strValField.get(t);

System.out.println(strVal);

} catch (NoSuchFieldException | SecurityException e) {

e.printStackTrace();

} catch (IllegalArgumentException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

}

}

java 通过反射怎么获取方法中参数值

public Userinfo findById(String id){

}

直接在这个方法里根据Id值做判断、

java反射虽然我也不怎么用,但是我的理解是根据这个类,去获取他已经定义好的方法,属性之类,你这个id的值是传过来的,灵活不定的。

java反射取对象属性值 不是通过get方法取值?

反射不是通过get取值的,是通过该对象的信息,比如说名称、内存地址等来访问类,方法,属性等,可以获取任意对象的信息,但不能获得私有属性(private String s=“sd”;)的值,切记

推荐《JAVA核心技术》这本书会对你有帮助的

在JAVA中,怎么利用反射获取一个方法

java中利用反射获取方法:

1.先找到方法所在类的字节码

2.找到需要被获取的方法

Class类中获取方法:

public Method[] getMethods();获取包括自身和继承(实现)过来的所有的public方法——Method不支持泛型,即后面不接

public Method[] getDeclaredMethods();获取自身所有的方法(private、public、protected,和访问权限无关),不包括继承的

public Method[] getMethod(String methodName, ClassT...parameterTypes);表示获取指定的一个公共的方法,包括继承的

参数: methodName:表示获取的方法的名字

parameterTypes:表示获取的方法的参数的Class类型

public Method[] getDeclaredMethod(String methodName, ClassT...parameterTypes);//表示获取本类中的一个指定的方法(private、protected、public,与访问权限无关),不包括继承的方法。

参数:methodName: 表示被调用方法的名字

parameterTypes:表示被调用方法的参数的Class类型如String.class只有通过方法签名才能找到唯一的方法,方法签名=方法名+参数列表(参数类型、参数个数、参数顺序)。

public Method getDeclaredMethod(String name,Class... parameterTypes):表示调用指定的一个本类中的方法(不包括继承的)

参数: methodName: 表示被调用方法的名字

parameterTypes:表示被调用方法的参数的Class类型如String.class

举例:

class P{

public void t1(){}

void t2(){}

private void t3(){}

}

class People extends P{

public void sayHi() {

    System.out.println("sayHi()");

}

public void sayHello(String name) {

    System.out.println("sayHello(String name)   " + "name = " + name);

}

private void sayGoodBye(String name, int age) {

    System.out.println("sayGoodBye(String name, int age)   " + "name = " + name + "  age = " + age);

}

}

public class MethodDemo {

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

    Class clazz = People.class;

    //获取类自身及父类所有public方法

    Method ms[] = clazz.getMethods();

    for (Method m : ms) {

        System.out.println(m);

    }

    System.out.println("---------------------------");

    //获取类自身所有方法(不会获取父类方法)

    ms = clazz.getDeclaredMethods();

    for (Method m : ms) {

        System.out.println(m);

    }

    System.out.println("---------------------------");

    //只能获取父类中的public方法,无法获取到父类的默认权限和private权限方法

    Method m = clazz.getMethod("t1", null);//public void com.reflex.P.t1()

    System.out.println(m);

    m = clazz.getMethod("sayHello", String.class);

    System.out.println(m);

    //Exception in thread "main" java.lang.NoSuchMethodException: com.reflex.People.sayGoodBye(java.lang.String, int)

    //getMethod方法只能获取public的

//        m = clazz.getMethod("sayGoodBye", String.class,int.class);

//        System.out.println(m);

    m = clazz.getDeclaredMethod("sayGoodBye", String.class,int.class);

    System.out.println(m);

    //带Declared的无法获取父类中的方法

//        m = clazz.getDeclaredMethod("t1", null);//Exception in thread "main" java.lang.NoSuchMethodException:com.reflex.People.t1()

//        System.out.println(m);

}

}

java中如何通过反射获取类的属性

简单的方法如下:

Class? cls=Class.forName(className);////////////////////////通过类的名称反射类

Object obj=cls.newInstance();//////////////////////对象实例化

Field field=cls.getField(fieldName);/////这个对应的是属性

fieldValue=field.get(obj);////这个就是属性的值

在JAVA中,怎么利用反射获取一个方法?

java的反射用法:(异常请自行处理)

①找到类:Class cl = Class.forName("java.util.Date");

②创建对象(要求这个类中含有空参数的构造方法):Object obj = cl.newInstence();

③根据名称和参数找方法:Method method1 = cl.getMethod("getTime");//如果没有参数不用写第二个参数如果有参数的如:Method method2 = cl.getMethod("setTime",long.class);

④在某个对象上面执行方法,Object result = method1.invoke(obj);//如果有参数的Object result = method2.invoke(obj,21317362721);

执行的方如果有返回值,将返回值返回,否则返回null

java开发工程师岗位职责:

1、负责公司网站开发和维护;

2、负责对网站进行实施,测试;

3、负责现有网站的维护和升级;

4、负责解决开发过程中的技术问题;

5、负责网站开发文档编写工作;

6、统一代码风格、监督团队开发、落实测试、验收代码质量;

7、参与软件系统设计,能编写代码。

java反射取值的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java反射获取方法以及调用方法、java反射取值的信息别忘了在本站进行查找喔。

The End

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