「动态对象java」动态对象是遵循自有规范的什么

博主:adminadmin 2022-11-29 02:41:07 43

今天给各位分享动态对象java的知识,其中也会对动态对象是遵循自有规范的什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java 中如何实现 动态声明对象?

没太理解你要求的 实现但一般这种动态获取类信息 在java中都是通知反射机制实现的

Java的反射API(Reflection API)

Class类:要正确使用Java反射机制就得使用java.lang.Class这个类。它是Java反射机制的起源。当一个类被加载以后,Java虚拟机就会自动产生一个Class对象。通过这个

Class对象我们就能获得加载到虚拟机当中这个Class对象对应的方法、成员以及构造方法的声明和定义等信息。

 

反射API用于反应在当前Java虚拟机中的类、接口或者对象信息

功能:(Object object = new Object(),下面以对象object进行说明)

1)  获取类的Class对象

如果在运行时一个类的实例已经得到,你可以使用

Class c = 对象名.getClass();例: Class c = object.getClass();Class s = object.getSuperclass();

如果你在编译期知道类的名字,你可以使用如下的方法Class c =java. awt. Button.class; 或者Class c = Integer.TYPE;

如果类名在编译期不知道, 但是在运行期可以获得, 你可以使用下面的方法Class c = Class.forName(“类的全路径”);

2)  获取类的Fields ,对Field进行赋值

Field[] fus = object.getClass().getDeclaredField();

Field fu = object.getClass().getDeclaredField(fieldName);//获取对象object的名称为fieldName的属性域。

fu.setAccessible(true) ;//设置属性域的访问属性

fu.set(object,val); //设置object对象的属性值

3)  获取类的Method

Method[]  ms= object.getClass().getDeclaredMethods()

4)  获取类的Constructor

5)  新建类的实例

(A)通过ClassT的函数newInstance

(B)通过Constructor对象的方法newInstance.

如何利用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中如何实现由类名动态创建对象

首先用 Class.forName(完整类名)获得一个Class对象clazz,然后调用Class对象clazz的newInstance()方法得到一个对象。例如:

package kown.reflect;

public class ReflectTest

{

    public static void main(String[] args)

    {

        try

        {

            Class? clazz = Class.forName("kown.reflect.Show");

            Show show = (Show) clazz.newInstance();

            show.test();

        } catch (ClassNotFoundException e)

        {

            e.printStackTrace();

        } catch (InstantiationException e)

        {

            e.printStackTrace();

        } catch (IllegalAccessException e)

        {

            e.printStackTrace();

        }

    }

}

class Show

{

    public void test()

    {

        System.out.println("hello world!");

    }

}

其中"kown.reflect.Show"是完整类名,就是包名加类的名字。

Java怎样动态生成对象

楼主您好

Object ob=Class.forName(className).NewInstance();

ob就是你要生成的对象啦

如果是相关类,首先可以提取一个接口,例如:

CommanOperation;然后,用

CommanOperation comm =(CommanOperation)Class.forName(className).newInstance();

生成相应的实例,以后可以根据接口作相应的操作。

如果是一组无关的类,就没有必要动态生成了。

动态对象java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于动态对象是遵循自有规范的什么、动态对象java的信息别忘了在本站进行查找喔。

The End

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