ZC_02_获取Constructor
1、
package reflectionZ; import java.lang.reflect.Constructor;
import java.lang.reflect.Type; public class Tzz02
{
public static void main(String[] args) throws Exception
{
// getConstructors() / getConstructor(...) Class<?> clazz1 = Class.forName("reflectionZ.Cat"); // 1、使用的是 默认的 构造函数
Object obj01 = clazz1.newInstance(); // 2、通过Class对象来得到构造函数
Constructor<?> c1 = clazz1.getConstructor(Class.forName("java.lang.String"), int.class);
Object obj0201 = c1.newInstance("小猫", 6); // 强转 Constructor<?> c2 = clazz1.getConstructor(String[].class);
String[] foods = {"鱼", "老鼠"};
Object obj0202 = (Cat)c2.newInstance((Object)foods); // 对象数组foods会被打散 if (obj01.getClass() == clazz1)
System.out.println("obj01.getClass() == clazz1");
else
System.out.println("obj01.getClass() != clazz1");
if (obj0201.getClass() == clazz1)
System.out.println("obj01.getClass() == clazz1");
else
System.out.println("obj01.getClass() != clazz1");
if (obj0202.getClass() == clazz1)
System.out.println("obj01.getClass() == clazz1");
else
System.out.println("obj01.getClass() != clazz1"); // *** *** ***
System.out.println(); int iIdx = 0;
Constructor<?>[] constructors = clazz1.getConstructors();
for (Constructor<?> constructor :constructors)
{
Type[] types = constructor.getGenericParameterTypes();
if (types.length == 0)
System.out.println("["+iIdx+"] ==> 无参构造函数");
else
{
System.out.println("["+iIdx+"] ==> "+types.length+"个参数的 构造函数,参数的类型分别为:");
for (Type type : types)
{
System.out.println(type);
}
}
System.out.println(); iIdx ++;
}
}
} class Cat
{
public Cat()
{}
public Cat(String _strName, int _iAge)
{
System.out.println("Cat --> _strName : "+_strName+" , _iAge : "+_iAge);
}
public Cat(String[] _foods)
{
if (_foods == null)
System.out.println("Cat --> _foods is null .");
else
{
for (int i=0; i<_foods.length; i++)
System.out.println("Cat --> _foods["+i+"] : "+_foods[i]);
}
}
}
2、
控制台输出:
Cat --> _strName : 小猫 , _iAge : 6
Cat --> _foods[0] : 鱼
Cat --> _foods[1] : 老鼠
obj01.getClass() == clazz1
obj01.getClass() == clazz1
obj01.getClass() == clazz1 [0] ==> 无参构造函数 [1] ==> 2个参数的 构造函数,参数的类型分别为:
class java.lang.String
int [2] ==> 1个参数的 构造函数,参数的类型分别为:
class [Ljava.lang.String;
3、
ZC_02_获取Constructor的更多相关文章
- Class对象、反射机制、获取Constructor构造方法
1.Class对象的三种创建方法(Class首字母大写) public class Demo { public static void main(String[] args){ Object obj= ...
- sencha toucha获取 constructor中的数据
config:{ tmp:null }, constructor : function(conf) { this.config.tmp=conf; } 添加配置属性,然后直接用 this.config ...
- java.lang.reflect.Constructor
java.lang.reflect.Constructor 一.Constructor类是什么 Constructor是一个类,位于java.lang.reflect包下. 在Java反射中 Cons ...
- Java 反射 (Class、ClassLoader、Constructor、Method、Field)
反射是Java中一个非常重要.非常强大的机制.曾看到一句话“反射是框架的灵魂”,初学时不懂,等到学完框架之后才慢慢理解其意. 什么是反射?我们先通过几个类和示例来初步体会一下反射. 一.ClassLo ...
- 反射的基本使用以及原理(Class获取方式)
1.什么是反射技术? 动态获取指定类以及类中的内容(成员),并运行其内容. 应用程序已经运行,无法在其中进行new对象的建立,就无法使用对象.这时可以根据配置文件的类全名去找对应的字节码文件,并加载进 ...
- 反射之深入理解Constructor原理
.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...
- 欢迎使用CSDN-markdown编辑器
私有变量和函数 在函数内部定义的变量和函数,如果不对外提供接口,外部是无法访问到的,也就是该函数的私有的变量和函数. function Box(){ var color = "blue&qu ...
- java反射 之 反射基础
一.反射 反射:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为 ...
- [Java] Java反射
首先推荐三个十分有趣的网站: http://www.programcreek.com/simple-java/ http://tutorials.jenkov.com/ http://www.meet ...
随机推荐
- 在window把项目上传到github
作为一个开发者,写博客,上传项目到github好像是不可不会的技能,很多有经验的老司机都会这么建议你.本宝宝第一次要把项目传到github的时候,确实有点蒙蔽,什么鬼,传个东西有必要这么难吗? git ...
- Less-css基础扩展
//扩展Extend less的伪类,合并了选择器,放在与它引用匹配的选择器上 Use Method:以在study上扩展test的样式为例 .test{ color:#000000; font-si ...
- SQLSERVER 创建索引实现代码
是SQL Server编排数据的内部方法.它为SQL Server提供一种方法来编排查询数据 什么是索引 拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数 ...
- 区块链 block chain 去信任
去中心化:不以参与交易的任何一方为中心 去信任:假定参与交易的任何一方都是不可信任的 区块链受到关注的原因 去中心化.去信任化.智能合约等,正好满足未来互联网持续发展所要求的信息的盖度自动化和高度程序 ...
- 开机启动/etc/rc.local失效无效怎么办?解决方法
开机启动/etc/rc.local失效问题的解决方法 第一种情况:当centOS 随机启动文件 /etc/rc.local 失效时请按如下修改1.echo /etc/rc.local >> ...
- Linux基础命令(四)
作业一:1) 开启Linux系统前添加一块大小为15G的SCSI硬盘 [root@bogon ~]# fdisk -l Disk /dev/sda: 21.5 GB, 21474836480 byte ...
- MySQL日期时间字段
mysql支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: DATETIME DATETIME 用于表示 年月日 时分秒,是 DATE和 ...
- Java应用多机器部署定时任务解决方案
Java多机部署下定时任务的处理方案. 本文转自:http://www.cnblogs.com/xunianchong/p/6958548.html 需求: 有两台服务器同时部署了同一套代码, 代码中 ...
- 海量数据存储之nosql教程(转)
add by zhj: 不错的系列,作者介绍了NoSQL数据库,并重点研究了Memcached和Redis,不知道后续是否还有其它NoSQL数据库的文章 海量数据存储之nosql教程之-01基础理论 ...
- 17届计算机应届生秋季校招分享 to Tomorrow
首先自我介绍一下,本人来自普通二本院校,计算机科学与技术专业,在校有一到两年asp.net项目经验,花了两个星期左右的时间转向java.现将此次的求职经历,分为三阶段,分享给大家. First Sta ...