「java反射取值」java反射获取方法以及调用方法
本篇文章给大家谈谈java反射取值,以及java反射获取方法以及调用方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、大佬告诉我java 反射如何获取成员变量的值
- 2、java 通过反射怎么获取方法中参数值
- 3、java反射取对象属性值 不是通过get方法取值?
- 4、在JAVA中,怎么利用反射获取一个方法
- 5、java中如何通过反射获取类的属性
- 6、在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反射取值的信息别忘了在本站进行查找喔。
发布于:2022-11-27,除非注明,否则均为
原创文章,转载请注明出处。