java.lang.reflect.Constructor

一、Constructor类是什么
  Constructor是一个类,位于java.lang.reflect包下。
  在Java反射中 Constructor类描述的是 类的构造方法信息,通俗来讲 有一个类如下:

 package com.testReflect;
public class ConstructorDemo {
private int num;
private String str; public ConstructorDemo(){
num = 2;
str = "xixi";
} public ConstructorDemo(int num,String str){
this.num = num;
this.str = str;
} @Override
public String toString() {
return "ConstructorDemo [num=" + num + ", str=" + str + "]";
}
}

  在Java反射中ConstructorDemo类中的构造方法ConstructorDemo()、ConstructorDemo(int num,String str)都是Constructor类的实例,这个Constructor类的实例描述了构造方法的全部信息。(包括:方法修饰符、方法名称、参数列表 等等)

二、如何获取Constructor类对象
  一共有4种方法,全部都在Class类中:
    - getConstructors():获取类中的公共方法
    - getConstructor(Class[] params): 获取类的特定构造方法,params参数指定构造方法的参数类型
    - getDeclaredConstructors(): 获取类中所有的构造方法(public、protected、default、private)
    - getDeclaredConstructor(Class[] params): 获取类的特定构造方法,params参数指定构造方法的参数类型

三、Constructor类中常用的方法
  对于构造方法,我们就是用来创建类的实例的,但是在Java反射中需要注意的是:默认构造函数和带参数的构造方法创建实例的区别。

 package com.testReflect;

 import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier; public class ConstructorTest {
public static void main(String[] args) throws Exception {
//使用反射第一步:获取操作类ConstructorDemo所对应的Class对象
Class<?> cls = Class.forName("com.testReflect.ConstructorDemo"); //获取默认的构造函数
Constructor constructor1 = cls.getConstructor(new Class[]{});
//获取构造函数信息
System.out.println("修饰符: "+Modifier.toString(constructor1.getModifiers()));
System.out.println("构造函数名: "+constructor1.getName());
System.out.println("参数列表: "+constructor1.getParameterTypes());
//通过默认的构造函数创建ConstructorDemo类的实例
Object obj = constructor1.newInstance();
System.out.println("调用默认构造函数生成实例:"+obj.toString()); System.out.println("==============================================="); //获取带参数的构造函数
Constructor constructor2 = cls.getConstructor(new Class[]{int.class,String.class});
System.out.println("修饰符: "+Modifier.toString(constructor2.getModifiers()));
System.out.println("构造函数名: "+constructor2.getName());
System.out.println("参数列表: "+constructor2.getParameterTypes());
//获取构造函数信息
//通过带参数的构造函数创建ConstructorDemo类的实例
Object obj2 = constructor2.newInstance(new Object[]{33,"haha"});
System.out.println("调用带参数构造函数生成实例:"+obj2.toString());
}
}

java.lang.reflect.Constructor的更多相关文章

  1. 利用java.lang.reflect.Constructor动态实例化对象

         }                    }                    }                    }  }              Student t = co ...

  2. 自己写一个java.lang.reflect.Proxy代理的实现

    前言 Java设计模式9:代理模式一文中,讲到了动态代理,动态代理里面用到了一个类就是java.lang.reflect.Proxy,这个类是根据代理内容为传入的接口生成代理用的.本文就自己写一个Pr ...

  3. java.lang.reflect操作对象属性(域)的值

    package reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.l ...

  4. JAVA中反射机制五(java.lang.reflect包)

    一.简介 java.lang.reflect包提供了用于获取类和对象的反射信息的类和接口.反射API允许对程序访问有关加载类的字段,方法和构造函数的信息进行编程访问.它允许在安全限制内使用反射的字段, ...

  5. java反射(java.lang.reflect) ---普通单例模式唯一性问题

    1. 普通的饱汉式.饿汉式 package org.bighead.test2; public class TestPrivate { private String str = "strPr ...

  6. Java 错误提示org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException

    java 操作excel文件 发布后报错 org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException XSS ...

  7. Java反射API研究(2)——java.lang.reflect详细内容与关系

    对于最新的java1.8而言,reflect中接口的结构是这样的: java.lang.reflect.AnnotatedElement java.lang.reflect.AnnotatedType ...

  8. JAVA中反射机制六(java.lang.reflect包)

    一.简介 java.lang.reflect包提供了用于获取类和对象的反射信息的类和接口.反射API允许对程序访问有关加载类的字段,方法和构造函数的信息进行编程访问.它允许在安全限制内使用反射的字段, ...

  9. 错误: java.lang.reflect.InvocationTargetException

    错误: java.lang.reflect.InvocationTargetException    at sun.reflect.NativeMethodAccessorImpl.invoke0(N ...

随机推荐

  1. 微信小程序一步步搭建商城系列-01-开篇

    1.小程序介绍 小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用.也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题.应用将无处不 ...

  2. Jenkins实现测试环境到生产环境一键部署(Windows)

    前言: 因为dotnet在发布站点后,然后再上传服务时,会因为各种的网速问题,导致站点瞬间挂掉!那么通过一键部署,先在测试站点测试好的文件,复制到正式站点上的一个缓冲区,进行预热配置,之后再本机进行文 ...

  3. RabbitMQ配置文件

    配置文件Config 在Web的可视化管理界面中可以看到一些文件的路径 比如 Config文件的地址 数据库存放的文件夹 log文件的地址 进入到这个文件夹会发现有这些文件,其中example是con ...

  4. jQuery焦点不在输入框内判断不能为空

    我能说JS和jquery有时候都有病吗?同样的代码,重敲一遍可以了,再过一会不行了.再试一下重敲,一模一样的代码,也不报错.就是不行.反复折腾.... 我帖上来的是经过了1个小时同等功能的测试OK的, ...

  5. WPF控件ComboBox 每个Item的ToolTip引发的异常

    介绍 首先介绍下要实现的任务.做一个下拉框,当选择每个项的时候将鼠标发在上面显示该项的ToolTip的内容(Image). 实现 Model: public class SkinInfo : Noti ...

  6. 十分钟入门less(翻译自:Learn lESS in 10 Minutes(or less))

    十分钟入门less(翻译自:Learn lESS in 10 Minutes(or less)) 注:本文为翻译文章,因翻译水平有限,难免有缺漏不足之处,可查看原文. 我们知道写css代码是非常枯燥的 ...

  7. JavaWeb---总结(十五)JSP基础语法

    一.JSP模版元素 JSP页面中的HTML内容称之为JSP模版元素.  JSP模版元素定义了网页的基本骨架,即定义了页面的结构和外观. 二.JSP表达式 JSP脚本表达式(expression)用于将 ...

  8. 常用机器视觉工具----图像分析工具(blob分析)

    http://blog.sina.com.cn/s/blog_67cc4eb70100ivnt.html Blob分析:Blob分析目的在于对图像中的2-D形状进行检测和分析,得到诸如目标位置.形状. ...

  9. JSContext

    An instance of JSContext represents a JavaScript execution environment. All JavaScript execution tak ...

  10. SQL 字段保留下划线后部分

    select  SUBSTRING(b.SUMMARY,0,charindex('_',b.SUMMARY))as SUMMARY  from UltimusDB.dbo.INCIDENTS b