Treflection01_Class对象_构造函数_创建对象
1、
package reflectionZ; import java.lang.reflect.Constructor;
import java.util.List; public class Treflection01
{
public static void main(String[] args) throws Exception
{
// 第13课 Class<?> clazz1 = Class.forName("reflectionZ.Cat");
// 使用反射 生成对象
// ZC: 创建出来的对象,使用的时候 需要处理 :
// ZC: (1)、强转成 某类的对象
// ZC: (2)、继续用反射来操作这个 对象 // 使用的是 默认的 构造函数
clazz1.newInstance(); // 强转 // 通过Class对象来得到构造函数
Constructor c1 = clazz1.getConstructor(Class.forName("java.lang.String"), int.class);
Cat cat1 = (Cat)c1.newInstance("小猫", 6); // 强转
cat1.Show(); Constructor<?> c2 = clazz1.getConstructor(String[].class);
String[] foods = {"鱼", "老鼠"};
// Exception in thread "main" java.lang.IllegalArgumentException: wrong number of arguments
//Cat cat2 = (Cat)c2.newInstance(foods); // 强转
// 可变参数 ==> 拆散 --> String[] foods==>拆成foods[0],foods[1],...
// ZC: 可是,普通的函数调用,没有这种情况的啊,为啥Constructor.newInstance(...)会这样?
Cat cat2 = (Cat)c2.newInstance((Object)foods); // 强转
cat2.Show();
}
} class Cat
{
public Cat()
{}
public Cat(String _strName, int _iAge)
{
FstrName = _strName;
FiAge = _iAge;
}
public Cat(String[] _foods)
{
Ffoods = _foods;
} public String FstrName;
public void setFstrName(String fstrName)
{
System.out.println("setFstrName("+fstrName+")");
FstrName = fstrName;
}
public int FiAge;
public String[] Ffoods = null;
private String Fstr1 = "WW"; public void Show()
{
System.out.println("名字 : "+FstrName);
if (Ffoods != null)
for (int i=0; i<Ffoods.length; i++)
System.out.println("Ffoods["+i+"] : "+Ffoods[i]);
}
public void Show(String _strName)
{
System.out.println("名字 : "+_strName);
}
public void Show(String _strName, int _iAge)
{
System.out.println("名字 : "+_strName+" , 年龄 : "+_iAge);
}
public void Show(List _list)
{
if (_list == null)
{
System.out.println("输入的_list == null .");
return;
}
for (int i=0; i<_list.size(); i++)
System.out.println("_list["+i+"] : "+_list.get(i));
}
private void Show(int _iAge)
{
System.out.println("年龄 : "+_iAge);
}
}
2、
Treflection01_Class对象_构造函数_创建对象的更多相关文章
- 虚函数_构造函数_测试_VS2010x86
1.控制台测试代码: #include <stdio.h> #include <windows.h> class A { public: A() { printf(" ...
- C++_基础_类和对象2
内容: (1)构造函数 (2)初始化列表及其必要性 (3)支持自定义类型转换的构造函数 (4)this指针 (5)const对象和成员函数 (6)析构函数 1.构造函数1.1 格式: class 类名 ...
- 易语言关于使用CURL,网页_访问,网页_访问S,网页_访问_对象,鱼刺(winHttpW)发送Get性能测试
易语言关于使用 CURL,网页_访问,网页_访问S,网页_访问_对象,鱼刺(winHttpW)发送Get性能测试 测试模块情况: |-精易模块5.8 |-鱼刺类Http |-libCURL +++ ...
- C++_构造函数与析构函数
构造函数与析构函数 OOP第二课 1 构造函数 1.1 构造函数具有一些特殊的性质 1.2 定义构造函数的一般形式 1.3 利用构造函数创建对象 2 成员初始化表 3 缺省参数的构造函数 4 重载构造 ...
- C++_基础_类和对象
内容: (1)引用 (2)类型转换 (3)C++社区给C程序员的建议 (4)面向对象编程的概念 (5)类和对象 (6)构造函数 (7)初始化列表及其必要性 1.引用1.1 指针和引用的使用说明(1)指 ...
- (79)Wangdao.com第十五天_JavaScript 对象的继承_prototype原型对象_封装_函数式编程
javascript 内置了许多 function 函数(){...} js 执行首先就会执行自己内置的函数定义 (function Function.function Object) 对象的继承 大 ...
- JS基础_构造函数
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- C++框架_之Qt的开始部分_概述_安装_创建项目_快捷键等一系列注意细节
C++框架_之Qt的开始部分_概述_安装_创建项目_快捷键等一系列注意细节 1.Qt概述 1.1 什么是Qt Qt是一个跨平台的C++图形用户界面应用程序框架.它为应用程序开发者提供建立艺术级图形界面 ...
- 转:HIBERNATE一些_方法_@注解_代码示例---写的非常好
HIBERNATE一些_方法_@注解_代码示例操作数据库7步骤 : 1 创建一个SessionFactory对象 2 创建Session对象 3 开启事务Transaction : hibernate ...
随机推荐
- Less-mixin函数基础一
//mixin函数 立即执行mixin函数,example: .test{ color:#ff00000; background:red; } //立即执行mixin grammar 1 扩展exte ...
- 巨蟒python全栈开发-第20天 核能来袭-约束 异常处理 MD5 日志处理
一.今日主要内容 1.类的约束(对下面人的代码进行限制;项目经理的必备技能,要想走的长远) (1)写一个父类,父类中的某个方法要抛出一个异常 NotImplementedError(重点) (2)抽象 ...
- 并发编程7 管道&事件&信号量&进程池(同步和异步方法)
1,管道 2.事件 3.信号量 4.进程池的介绍&&进程池的map方法&&进程池和多进程的对比 5.进程池的同步方法和异步方法 6.重新解释同步方法和异步方法 7.回调 ...
- Java 之综合练习
// 练习一: 写出程序结果 interface A{} class B implements A { public String func() { return "func"; ...
- linux库冲突解决方法 apt purge / aptitude purge
remove libs: [apt-get purge remove] or [aptitude purge] how to use apt-get and aptitude https://blog ...
- Python每日一练------内置函数+内置变量+内置模块
1.内置函数 Python所有的内置函数 Built-in Functions abs() divmod() input() open() staticmethod() all() e ...
- 【我的Android进阶之旅】解决 Error:CreateProcess error=216, 该版本的 %1 与您运行的 Windows 版本不兼容。请查看计算机的系统信息,了解是否需要 x86
一.错误描述 刚刚打开Android Studio新建一个项目,然后就编译不了,报了如下所示的错误: 错误描述为: Error:CreateProcess error=216, 该版本的 %1 与您运 ...
- 0503-Hystrix保护应用-feign的hystrix支持
一.概述 1.1.基础[示例一] 如果Hystrix在类路径上并且feign.hystrix.enabled = true,Feign将用断路器包装所有方法.还可以返回com.netflix.hyst ...
- shell中的for、while、until(二)
1.C语言格式的for命令: for((var; condition;iteration process)) 注意: 1.给变量赋值可以有空格 2.条件中的变量不以美元符开头: 3.迭代过程的算式未用 ...
- python16_day11【MQ、Redis、Memcache】
一.RabbitMQ 是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(MQ)是一种应 ...