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 ...
随机推荐
- centos6.5上搭建gitlab服务器(亲测可用哦)
最近的版本控制中,git可谓是脱缰的野马,一发不可收拾.当然git的设计模式也是愈发的成熟,让人刮目相看,完美解决了svn上的不足之处.在目前分布式横行的天下,git可谓是占得了一席之地. 废话少说, ...
- Contos更换python版本
1.查看版本 #python -VPython 2.6.6 2.安装前准备,安装相关库#yum install gcc gcc-c++ autoconf automake#yum install op ...
- Spring 框架的 applicationContext.xml 配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- java URL 利用网址api 查出手机号归属地
手机号码归属地查询api接口 1.淘宝网API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=手机号码参数:tel:手机号码返 ...
- 【查看版本】查看linux版本/查看32还是64
系统/机器信息 1.查看linux是ubuntu还是centos lsb_release --help -a 打印所有信息 -s 简短打印 2.查看系统是64还是32 uname --help -a ...
- Python高级教程-切片
Python中的切片 取一个list或tuple的部分元素是非常常见的操作.比如,一个list如下: >>> L = ['A','B','C','D'] 对经常取指定索引范围的操作, ...
- Python基础教程-List和Tuple
List Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如: >>> classmates = ['Michael',' ...
- Mysql查询结果导出为Excel的几种方法
本文地址:http://www.cnblogs.com/qiaoyihang/p/6398673.html 具体原文找不到了,此篇是借鉴门户的一篇文章 方法一:查询语句直接输出语法格式: Exampl ...
- Hadoop应用开发实战案例 第2周 Web日志分析项目 张丹
课程内容 本文链接: 张丹博客 http://www.fens.me 用Maven构建Hadoop项目 http://blog.fens.me/hadoop-maven-eclipse/程序源代码下载 ...
- django【原生分页】
1.urls.py url(r'^page2/',views.page2), 2.views.py from django.core.paginator import Paginator,PageNo ...