RT, 我想要得到一个类中为数组类型变量的值,我在Field的API中找到一个get()方法,但是貌似得到的是这个数组的引用(一个象内存地址的字串),该怎么拿到里面的值呢?先谢谢各位了。
写了个例子,请仔细查看代码,具体过程需要你自己对照java API 再研究,
先定义了一个普通的学生类,如下:
public class Student {对学生类进行反射
public class Test3 {希望你采纳。 谢谢。
本回答被提问者采纳package com.cs.gang;
import java.lang.reflect.Field;
/**
* Created by IntelliJ IDEA.
* User: gang-liu
* Date: 2/26/14
* Time: 2:12 PM
*/
public class ReflectTest {
private String[] strData;
private int[] intData;
public ReflectTest() {
strData = new String[]{"one", "two", "three"};
intData = new int[]{1, 2, 4, 5, 6};
}
public ReflectTest(String[] strData, int[] intData) {
this.strData = strData;
this.intData = intData;
}
public String[] getStrData() {
return strData;
}
public void setStrData(String[] strData) {
this.strData = strData;
}
public int[] getIntData() {
return intData;
}
public void setIntData(int[] intData) {
this.intData = intData;
}
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
final ReflectTest test = new ReflectTest();
final Field strField = ReflectTest.class.getDeclaredField("strData");
strField.setAccessible(true);
final String[] data = (String[]) strField.get(test);
for(final String d : data){
System.out.println(d);
}
final Field intField = ReflectTest.class.getDeclaredField("intData");
intField.setAccessible(true);
final int[] intDatas = (int[]) intField.get(test);
for(final int intData : intDatas){
System.out.println(intData);
}
}
}
java如何利用反射机制得到一个类中为数组类型的成员变量的值
public class Test3 {public static void main(String[] args) {Student s = new Student();s.setId(1);s.setName("张三");s.setAge(23);s.setAiHao(new String[] { "足球", "篮球", "上网" });try {\/\/ 获取所有的变量Field[] fields = Student.class.getDeclaredFields();\/\/ ...
java反射机制的实现原理
Java的反射机制的实现要借助于4个类:class,Constructor,Field,Method;其中class代表的时类对 象,Constructor-类的构造器对象,Field-类的属性对象,Method-类的方法对象。通过这四个对象我们可以粗略的看到一个类的各个组 成部分。Class:程序运行时,java运行时系统会对所有的对象进行运行时类型的处理。这项信息记录了每...
JAVA反射机制作用?
Method类:提供关于类或接口上单独某个方法的信息。所反映的方法可能是类方法或实例方法(包括抽象方法)。 这个类不难理解,它是用来封装反射类方法的一个类。Class类:类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所...
Java反射机制获取set()方法 并且为set()方法传值
第1个是方法名称,第2个是该方法的所有参数数组,这样返回的是Method这个对象Method.invoke() 传入调用方法的类,另一个是调用这个方法所需要的参数,如果该方法没有参数,可以不填写,在JDK1,4之前,第2个参数是传入一个数组的,
反射机制的Java中
1.检测类:1.1 reflection的工作机制考虑下面这个简单的例子,让我们看看 reflection 是如何工作的。import java.lang.reflect.*;public class DumpMethods {public static void main(String args[]) {try {Class c = Class.forName(args[0]);Method m[] = c.getDeclaredMethods();for (int i ...
javaparserlombok
java反射获取属性值1、这种想法是不可能实现的,父类中是获取不到子类的属性的,你需要换一个思路解决问题。2、获得方法包括获得方法的名称,方法的返回类型,方法的访问修饰符,以及通过反射执行这个方法。获得属性包括属性的名称,类型,访问修饰符,以及这个属性的值。这些获得都有相应的API提供操作。3、...
如何利用java反射机制往.java文件中添加属性
\/\/定义一个类的数组,一般这种都是用在method的参数列表 \/\/string.class说明传的是类型 method m = c.getmethod("study",cs);\/\/获取装载类的实例的study方法,注意后面的参数,class[]ca = {"tom",18} \/\/和上面有点不同,这里传的是值 object result = m.invoke(o,ca);\/\/执行method方法,并...
Java中为什么反射机制中的属性的类型是Class类型的 ?方式机制中那么哪些...
Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。1. 得到某个对象的属性 1 public Object getProperty(Object owner, String fieldName) throws ...
java反射机制详解
反射是从1.2就有的,后面的三大框架都会用到反射机制,涉及到类"Class",无法直接new CLass(),其对象是内存里的一份字节码.Class 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都...
java反射机制 如何给不定参数invoke
args)invoke方法本类就要两个参数的啊 第一个参数是调用方法的对象 第二个参数本来就是个可变参 直接在后面传就可以了 BTW:可变参数在Java底层实现的时候就是个数组而已 实在不行你可以提供数组类型的参数来匹配可变参数 invoke(obj,new Object{参数1,参数2,参数3});如果还不明白那么qq找我吧:)