java反射之Constructor简单应用

Constructor类是java反射中重要的类,它是对类中构造器的描述的类。类似于Method(对类中方法的描述的类),Field(对类中属性的描述的类)。

通过创建Constructor的对象实例,我们可以创建源对象。

小测试demo:

package com.wtd;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.ListIterator;

class Car{
    public void run(){
        System.out.println("----running");
    }
    public Car() {
        // TODO Auto-generated constructor stub
        System.out.println("Car()");
    }
    public Car(int i){
        System.out.println("Car(i)");

    }
}
public class Temp1 {
    public static void main(String[] args) {
        Class<Car> clazz = Car.class;
        try {
            Constructor<Car> constructor = clazz.getConstructor();
            Car car =  constructor.newInstance();
            Constructor<Car> constructor2= clazz.getConstructor(int.class);
            Car car2 = constructor2.newInstance(2);
            car.run();
            car2.run();
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InstantiationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

output:
Car()
Car(i)
----running
----running

注意:

Car的构造器,必须显示声明。不然Constructor.newInstance()报错。

时间: 2024-10-25 08:02:28

java反射之Constructor简单应用的相关文章

Java反射的一点简单理解

最近才开始学Java,这两天接触了框架后对于反射的概念有很大的困惑,在网上检索了很多信息后发现大多都是在说反射怎么使用的.将反射的原理以及为什么需要反射的比较少,即使有讲很多都比较晦涩难懂. 参考: 学习java应该如何理解反射? - 罗大然不写代码的回答 - 知乎) 后来终于找到了一篇知乎回答讲反射的作用的,我觉得讲得很好,加上一些个人的些微见解记录下来. 简单的水果工厂 这位答主用了一个简单的工厂模式举例来说明反射的作用: // Fruit接口 public interface Fruit

Java反射机制的简单应用

一直感觉java的反射机制很强大,但是可用的地方不多.在android学习的时候,一直想实现挂断电话的功能,但是系统并没有提供开放的api接口,看了一下网上使用反射机制来实现该功能,确实很强大,很实用. 今天在对应的web开发中,客户端需要提交参数给服务器,自己已经写好了对应的bean文件,但是每一次都需要就其内部的key-value进行拼接,比较麻烦,突然想起了了反射机制,尝试了一下,确实非常的好用.下面看一下代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

java反射技术的应用

JAVA 反射机制的简单应用 开发的时候有时候会碰到这样的情况,我们在写程序的时候并不知道需要调用某个对象的哪个方法,只有程序运行后,我们才能够知道.或许我们需要根据客户端传过来的某个String 参数的值来判断我们应该执行哪个方法.在这种情况下JAVA 的反射执行就可以帮上忙了.下面是我做的一个简单的测试代码,提供给大家做个参考. import  java.lang.reflect.InvocationTargetException;import  java.lang.reflect.Meth

java反射机制简单介绍

1.字节码.所谓的字节码就是当java虚拟机载入某个类的对象时,首先须要将硬盘中该类的源码编译成class文件的二进制代码(字节码),然后将class文件的字节码载入到内存中,之后再创建该类的对象 2.java反射的基础是Class类(注意不是小写的class),Class类实例代表着内存中的一份字节码.常见的获取Class类对象的方法例如以下(第一种为对象的方法,另外一种为类的方法): Dog dog = new Dog(); Class dogClass = dog.getClass();

Java反射机制的原理及在Android下的简单应用

花了几天时间,研究了一下Java的反射机制.在这里总结一下这几天学习的成果,一来分享自己的学习过程和在学习中遇到的问题,二来是给像我一样不太了解Java反射机制的同学做一个简单的介绍.在文章后面会链接一个Android反射机制的应用程序. 一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.在计算机科学领域,反射是一类应用,它们能够自描述和自控制.这类应用通过某种机制来实现对自己行为的描述和检测,并能根据自身行为的状态和结果,调整或修改应用所描述

Java反射的简单入门

1.Class的简单介绍 Class类的类表示正在运行的Java应用程序中的类和接口. 枚举是一种类,一个注解是一种接口, 每个数组也属于一个反映为类对象的类,该对象由具有相同元素类型和维数的所有数组共享. 原始Java类型( boolean , byte , char , short , int , long , float和double ),和关键字void也表示为类对象. 摘自jdk1.8中文版,刚开始看可能不懂,现在逐句来解释一下. 第一句话:一个类被加载以后,JVM就会在内存中给创建一

java反射简单实现注入

做了好久的java开发 ,却一直没有详细了解java反射机制,后来写项目的时候发现用反射可以少写好多无聊的代码,因此用java反射简单实现注入. java反射的具体细节可参见 这篇博客写的非常详细,点此进入~ 而一般基于业务的编程主要用反射实现将属性动态的注入一个对象中. 以下是方法实现: 1 /** 2 * 根据 传入的map与类名,通过反射实例化对象 3 * @param className 需要实例化的类名 4 * @param map 包含属性的键值对 (String,Object) 5

简单原理介绍java反射(2)

public class Person { private String name; private int age; public Person(String name,int age) { super(); this.name = name; this.age = age; } public Person(){} public String getName() { return name; } public void setName(String name) { this.name = na

java反射并不是什么高深技术,面向对象语言都有这个功能,而且功能也很简单,就是利用jvm动态加载时生成的class对象

java反射并不是什么高深技术,面向对象语言都有这个功能. 面向对象语言都有这个功能,而且功能也很简单,就是利用jvm动态加载时生成的class对象,去获取类相关的信息 2.利用java反射可以调用类的私有方法么?private()方法 答:可以,class取出method,method继承executable类,executable类继承AccessibleObject类,AccessibleObject有个setAccessiable()设置这个方法是否可访问. 则设置成true,就可将pr