「java反射动态添加属性」java反射动态添加属性不显示

博主:adminadmin 2022-12-19 22:39:07 68

今天给各位分享java反射动态添加属性的知识,其中也会对java反射动态添加属性不显示进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何利用java的反射机制动态的取得对象的属性

Java.lang.Class

getDeclaredFields()

返回 Field 对象的一个数组,这些对象反映此 Class

对象所表示的类或接口所声明的所有字段。

Java.lang.reflect.Field

getName()

返回此 Field 对象表示的字段的名称。

getGenericType()

返回一个 Type 对象,它表示此 Field 对象所表示字段的声明类型。

以上是jdk里面的一些用法,就是用你想要获取对象的属性得到它的class 然后调用 getDeclaredFields()就可以得到字段数组了。

然后再用下面的方法就可以得到属性名,类型这一些。

很简单,要想实现现复杂的功能就再找一下api 找出相应的方法。

如何利用java的反射机制动态创建对象

Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。当然反射本身并不是一个新概念,它可能会使我们联想到光学中的反射概念,尽管计算机科学赋予了反射概念新的含义,但是,从现象上来说,它们确实有某些相通之处,这些有助于我们的理解。

Java反射机制主要提供下面几种用途:

在运行时判断任意一个对象所属的类

在运行时构造任意一个类的对象

在运行时判断任意一个类所具有的成员变量和方法

在运行时调用任意一个对象的方法

以下,我们就以动态创建对象为例,通过代码来解释一下反射:

public class ReflectionTest {

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

// 建立学生对象

Student student = new Student();

// 为学生对象赋值

student.setStuName("Wanggc");

student.setStuAge(24);

// 建立拷贝目标对象

Student destStudent = (Student) copyBean(student);

// 输出拷贝结果

System.out.println(destStudent.getStuName() + ":"

+ destStudent.getStuAge());

}

/**

* 拷贝学生对象信息。

*

* @param from

拷贝源对象

* @param dest

拷贝目标对象

* @throws Exception

例外

*/

private static Object copyBean(Object from) throws Exception {

// 取得拷贝源对象的Class对象

Class? fromClass = from.getClass();

// 取得拷贝源对象的属性列表

Field[] fromFields = fromClass.getDeclaredFields();

// 取得拷贝目标对象的Class对象

Object ints = fromClass.newInstance();

for (Field fromField : fromFields) {

// 设置属性的可访问性

fromField.setAccessible(true);

// 将拷贝源对象的属性的值赋给拷贝目标对象相应的属性

fromField.set(ints, fromField.get(from));

}

return ints;

}

}

如何利用java反射机制往.java文件中添加属性

class

c

=

class.forname("student");

//通过字符串装载类,

必须是绝对路径,

即包括包名

object

o

=

c.newinstance();

//获取装载类的实例,

如果找不到就会抛出异常

class[]

cs=

{sting.class,int.class};

//定义一个类的数组,

一般这种都是用在method的参数列表

//string.class说明传的是类型

method

m

=

c.getmethod("study",cs);

//获取装载类的实例的study方法,

注意后面的参数,

class[]

ca

=

{"tom",18}

//和上面有点不同,

这里传的是值

object

result

=

m.invoke(o,ca);

//执行method方法,并获取结果

反射一般都用在类名,字段,方法可以随便变化的时候,

还可以进行统一的处理,提高扩展性

比如说hibernate框架的实体类,

预先你不可能知道实体类会有什么字段,

包括字段的类型都是有可能随意变化的,

这时候要获取指定类的字段信息就必须得使用反射了.

还有struts的actionform等都一样

以上纯属个人意见,

学得不是很深,希望能给你带来帮助

java 反射可以给对象添加方法和属性吗

不可以,你可以想像一下,反射发生的时机和步骤。当通过反射获得了指定对象的Class对象之后,此时的对象是存放在堆内存中的,而且已经完成了编译,此时的对象是无法对其进行添加熟悉和方法的。换种思路,如果可以的话,那么修改厚的对象将不再是原有类的对象,那么原有类类型的引用变量引用当前对象势必报错。你可以写个例子试试。

java中怎么动态的给类的属性赋值

利用java的反射机制可以做到:

Object instance = beanClass.newInstance();//beanClass自定义class

Method setJobName = beanClass.getMethod("setJobName", String.class);

method.invoke(instance, "Super Cool Job");//开始设置值。

关于java反射动态添加属性和java反射动态添加属性不显示的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

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