精华内容
下载资源
问答
  • 这篇文章主要介绍了java通过反射创建对象并调用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下1.用户类package com.lf.entity;import ...

    这篇文章主要介绍了java通过反射创建对象并调用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    1.用户类

    package com.lf.entity;

    import com.lf.annotation.SetProperty;

    import com.lf.annotation.SetTable;

    public class UserEntity {

    private String userName;

    private int userAge;

    private final int money = 10000;

    public String getUserName() {

    return userName;

    }

    public void setUserName(String userName) {

    this.userName = userName;

    }

    public int getUserAge() {

    return userAge;

    }

    public void setUserAge(int userAge) {

    this.userAge = userAge;

    }

    //借钱方法

    public int getMoney(){

    System.out.println("你借了 " + money + "元!");

    return money;

    }

    //还钱方法,单个参数

    public void repay(int money){

    System.out.println("你还了 " + money + "元!");

    }

    //还钱方法,多个参数

    public void repay(String userName,int money){

    System.out.println(userName+ " 还了 " + money + "元!");

    }

    }

    2.测试类

    package com.lf.test;

    import java.lang.reflect.Method;

    import com.lf.entity.UserEntity;

    public class Reflection {

    //反射调用方法获取返回值

    //第一种方法,获取对象,直接通过对象调用方法

    //第二种方法,通过方法名获取方法,执行方法

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

    Class> userClass = Class.forName("com.lf.entity.UserEntity");

    UserEntity userEntity = (UserEntity) userClass.newInstance();

    //第一种方法

    System.out.println("第一次借钱:");

    int money = userEntity.getMoney();

    System.out.println("实际拿到钱为: " + money);

    System.out.println("------------------------分割线------------------------");

    //第二种方法,(无参的示例:借钱)

    System.out.println("第二次借钱:");

    Method getMoney = userClass.getMethod("getMoney");//得到方法对象

    Object money2 = getMoney.invoke(userEntity);//调用借钱方法,得到返回值

    System.out.println("实际拿到钱为:" + money2);

    System.out.println("------------------------分割线------------------------");

    //第二种方法,(单个参数的示例:还钱)

    System.out.println("第一次还钱:");

    Method repay1 = userClass.getMethod("repay",int.class);//得到方法对象,有参的方法需要指定参数类型

    repay1.invoke(userEntity,3000);//执行还钱方法,有参传参

    System.out.println("------------------------分割线------------------------");

    //第二种方法,(单个参数的示例:还钱)

    System.out.println("第二次还钱:");

    Method repay2 = userClass.getMethod("repay", String.class,int.class);//得到方法对象,有参的方法需要指定参数类型

    repay2.invoke(userEntity,"小飞",5000);//执行还钱方法,有参传参

    }

    }

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

    展开全文
  • 反射创建对象的步骤 只要两步: 1.获取类的字节码对象 2.调用字节码对象的newInstance()方法 public class Person { String name = "Will"; } class Test { public static void main(String[] args) throws ...

    反射创建对象的步骤

    只要两步:
    1.获取类的字节码对象
    2.调用字节码对象的newInstance()方法

    public class Person {
        String name = "Will";
    }
    
    class Test {
        public static void main(String[] args) throws Exception {
            Class clz = Class.forName("com.pac1.Person");
            Person p = (Person) clz.newInstance();		//这里要做一下类型转换
            System.out.println(p.name);
        }
    }

    执行结果:
    在这里插入图片描述

    反射创建对象和用new创建对象的异同

    相同点:
    都要调用构造方法;
    每一次都是产生新的对象
    不同点:
    反射创建的方式更灵活一些, 只要传入一个类的全限定名即可, 毕竟比起严谨的new要宽松的许多;
    反射创建对象的速度和性能略低于new, 不过这个差距要连续创建几万个对象才会出现那仅仅半秒的差距

    展开全文
  • //想要对对象进行初始化,使用构造器的方法newInstance(); Object obj = constructor.newInstance("zhagnsan",30); //获取所有构造器。 Constructor[ ] constructors = clazz.getConstructors(); //只包含公共的 //...

    public static void method_2() throws Exception {

    //既然类中没有空参数的构造函数,那么只有获取指定参数的构造函数,用该函数来进行实例化。

    Class clazz = Class.forName("cn.wuliaokankan.bean.Person");

    //获取一个带参数的构造器。

    Constructor constructor = clazz.getConstructor(String.class,int.class);

    //想要对对象进行初始化,使用构造器的方法newInstance();

    Object obj = constructor.newInstance("zhagnsan",30);

    //获取所有构造器。

    Constructor[ ] constructors = clazz.getConstructors();    //只包含公共的

    //constructors = clazz.getDeclaredConstructors();       //本类公有,包含私有的

    for(Constructor con : constructors) {

    System.out.println(con);

    }

    }

    展开全文
  • 在 Java中 ,是否可以覆盖使用创建的类中的方法reflection?例如,说我有以下课程:public class MyObject{public String foo, bar;public MyObject(String foo){this.foo = foo;this.bar = foo + "bar";}public ...

    在 Java中 ,是否可以覆盖使用创建的类中的方法reflection?例如,说我有以下课程:

    public class MyObject

    {

    public String foo, bar;

    public MyObject(String foo)

    {

    this.foo = foo;

    this.bar = foo + "bar";

    }

    public void setBar(String bar)

    {

    this.bar = bar;

    }

    }

    在一个类中,我想直接创建它并重写其setBar方法,如下所示:

    MyObject obj = new MyObject("something")

    {

    @Override

    public void setBar(String bar)

    {

    this.bar = this.foo;

    }

    };

    有没有办法以同样的方式使用反射来覆盖方法?也许是这样的吗?:

    Class> _class = Class.forName("com.example.MyObject");

    Constructor> _constructor = _class.getConstructor(new Class>[]{String.class});

    Method m = _class.getMethod("setBar", new Class>[]{String.class});

    Object obj = _constructor.newInstance("Foo String")

    {

    m = new Method(new Class>[]{String.class})

    {

    System.out.println("Foobar");

    }

    };

    如果没有,是否还有其他方法可以这样做,或者可以使用外部库吗?我正在寻找将侦听器添加到setter方法以更改绑定值的方法。

    展开全文
  • 我们总是讨论没有对象就去new一个对象,创建对象的方式在我这里变成了根深蒂固的new方式创建,但是其实创建对象的方式还是有很多种的,不单单有new方式创建对象,还有使用反射机制创建对象,使用clone方法去创建对象...
  • 这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 想创建一个对象只要知道名字不需要知道具体的实现。 工厂模式只负责创建,不负责其使用。这样对于用户来说,只要使用工厂模式创建出来的对象就...
  • 这里写自定义目录标题怎么反射动态建立对象新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、...
  • 怎么创建对象?首先得先获取Class对象才能创建对象 一、在运行时创建任意引用数据类型的对象 方式一:使用Class对象直接new对象 怎么创建对象?首先得先获取Class对象才能创建对象 (1)获取某个类型的Class对象 (2...
  • 【前言】  前几日心血来潮想研究着做一个...在做性能测试的时候,发现居然比反射Activator.CreateInstance方法创建对象毫无优势可言。继而又写了个Expression Tree的对象工厂,发现和Emit不相上下,比起系统反...
  • java中如何用反射创建一个对象 如何理解java的反射反射是一种怎么样的机制呢
  • 下面是jdk11的源代码,看到有个方法 ...我们知道创建对象有几种方式 1. new 关键字 ,默认或者显示地调用构造方法实现。 2.反射newInstance。 3.反射方式显示调用构造函数 4.深度拷贝copy 下面是C...
  • 思考:反序列化是怎么创建对象的呢? 反序列化创建对象 思路 反序列化创建对象的过程,需要将流转换为对象。那么,可以通过序列化,将对象的状态写在流里面,根据需要把该流读取出来重新构造一个相同的对象。 代码...
  • 一、使用反射创建对象通过反射来生成对象有如下两种方式:方式一:使用 Class 对象的 newInstance() 方法来创建 Class 对象对应类的实例,这种方法要求该 Class 对象的对应类有默认构造器,而执行 newInstance() ...
  • 如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。那么如何注册事件呢?此文将介绍如何使用反射注册事件。下面话不多说了,来一起看看看详细的介绍吧不使用反射例如,我...
  • 首先看下JAVA创建对象的四种方式:用new关键字创建;(最常用的)调用对象的clone方法;利用反射,调用Class类的或者是Constructor类的newInstance()方法;用反序列化,调用ObjectInputStream类的readObject()方法;在...
  • 通常我们使用工厂模式来创建对象都需要知道目标对象所在DLL文件名以及包含命名空间的类名。以下为其中比较普遍的创建方式: Activator.CreateInstance("YourAssemblyName", "YourTypeName"); 那DNN是怎么做的呢? ...
  • 反射的运行速度慢,有没有改进的方法呢?可以使用cache
  • java创建对象.md

    2018-11-26 16:50:42
    怎么创建? 构造器类.创建对象()。 Class.创建对象(),最终调用的也是构造器类.创建对象()。 克隆 浅拷贝。 什么是浅拷贝? 对象的数据, 1.基本数据类型 拷贝值。 2.对象类型 只拷贝引用,即引用指向的对象,和原....
  • 转载请注明来源 赖赖的博客前景概要在 01 走进Spring,Context、Bean和IoC 中,我们看到了强大的Spring通过ApplicationContext实现了bean工厂(也就是对象工厂),那究竟是怎么实现的呢,本次给大家写一个小Demo展现其...
  • 对于几何画板很多的用户不仅会用到平移、旋转、缩放、反射和迭代这些,如果有需求的话还可以通过“创建自定义变换”,建立新的变化规则来满足自己实现对象的变换。其实这就是自定义变换。对于自定义变换的例子有很多...
  • 反射怎么使用

    2016-09-13 20:01:21
    简介:反射就是解析,可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。  反射的作用:     1. 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现 有...
  • 转载请注明来源 赖赖的博客前景概要在 01 走进Spring,Context、Bean和IoC 中,我们看到了强大的Spring通过ApplicationContext实现了bean工厂(也就是对象工厂),那究竟是怎么实现的呢,本次给大家写一个小Demo展现...
  • java零基础入门-高级特性篇(十六) 类加载与反射 3如果你...面向切面编程AOPAOP - Aspect Oriented Programming的缩写,java不是面向对象编程么,怎么又整了个面向切面编程出来了?其实面向切面这种思想是对面向对象...
  • 动态创建对象

    2008-08-31 11:04:00
    郁闷,听某某程序员大...回宿舍后找了相关动态创建对象的方法,还是没找到什么好的实现方法。使用老办法。如下: Class1 asm = Assembly.Load("TestDLL").CreateInstance("TestDLL.Class1") as Class1; Type ...
  • 模拟spring创建对象

    千次阅读 2012-07-15 12:28:07
    利用反射的机制,我们就很容易想出spring是怎么样帮我们创建对象的。  spring的xml文件中保存了需要创建的bean的信息。        ..................    其实要创建bean实例的话,我们可以根据以下的...
  • Java创建对象四种方式

    2020-03-12 19:34:48
    版权声明 本文原创作者:元芳,你怎么看 ... 今天突然被问到对象的创建有几种方式,...Java创建对象四种方式 new的方式,也是最常用的方式 利用反射,使用Java.lang.Class或者java.lang.reflect.Constructor类的ne...
  • 我们通过new创建一个类的实例时,实际上是由Java虚拟机根据这个类的Class对象在运行时构建出来的,而反射是通过一个类的Class对象来获取它的定义信息,从而我们可以访问到它的属性、方法,知道这个类的父类、实现了...
  • 通过反射构造内部类对象

    千次阅读 2009-02-27 19:18:00
    今天折腾了好一阵子,终于明白怎么通过反射来构造内部类对象了。这里头名堂不少,只能一一道来。首先在 javalang 包下写一个包含内部类的类:package javalang;public class Outer { public static class Inner1{}}...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 279
精华内容 111
关键字:

反射怎么创建对象