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对象_构造函数_创建对象的更多相关文章

  1. 虚函数_构造函数_测试_VS2010x86

    1.控制台测试代码: #include <stdio.h> #include <windows.h> class A { public: A() { printf(" ...

  2. C++_基础_类和对象2

    内容: (1)构造函数 (2)初始化列表及其必要性 (3)支持自定义类型转换的构造函数 (4)this指针 (5)const对象和成员函数 (6)析构函数 1.构造函数1.1 格式: class 类名 ...

  3. 易语言关于使用CURL,网页_访问,网页_访问S,网页_访问_对象,鱼刺(winHttpW)发送Get性能测试

    易语言关于使用 CURL,网页_访问,网页_访问S,网页_访问_对象,鱼刺(winHttpW)发送Get性能测试 测试模块情况: |-精易模块5.8  |-鱼刺类Http  |-libCURL +++ ...

  4. C++_构造函数与析构函数

    构造函数与析构函数 OOP第二课 1 构造函数 1.1 构造函数具有一些特殊的性质 1.2 定义构造函数的一般形式 1.3 利用构造函数创建对象 2 成员初始化表 3 缺省参数的构造函数 4 重载构造 ...

  5. C++_基础_类和对象

    内容: (1)引用 (2)类型转换 (3)C++社区给C程序员的建议 (4)面向对象编程的概念 (5)类和对象 (6)构造函数 (7)初始化列表及其必要性 1.引用1.1 指针和引用的使用说明(1)指 ...

  6. (79)Wangdao.com第十五天_JavaScript 对象的继承_prototype原型对象_封装_函数式编程

    javascript 内置了许多 function 函数(){...} js 执行首先就会执行自己内置的函数定义 (function Function.function Object) 对象的继承 大 ...

  7. JS基础_构造函数

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. C++框架_之Qt的开始部分_概述_安装_创建项目_快捷键等一系列注意细节

    C++框架_之Qt的开始部分_概述_安装_创建项目_快捷键等一系列注意细节 1.Qt概述 1.1 什么是Qt Qt是一个跨平台的C++图形用户界面应用程序框架.它为应用程序开发者提供建立艺术级图形界面 ...

  9. 转:HIBERNATE一些_方法_@注解_代码示例---写的非常好

    HIBERNATE一些_方法_@注解_代码示例操作数据库7步骤 : 1 创建一个SessionFactory对象 2 创建Session对象 3 开启事务Transaction : hibernate ...

随机推荐

  1. vbs 修改Administrator帐号密码

    Dim WshShell, oExec Set wshShell = CreateObject("WScript.Shell") Set objFSO = CreateObject ...

  2. C# 二进制文件操作(内容搜索、数据截取)

    private void button2_Click(object sender, EventArgs e) { var list = new List<Frame>(); byte[] ...

  3. 用户登陆状态,ios开发用户登陆

    IOS开发之记录用户登陆状态,ios开发用户登陆 上一篇博客中提到了用CoreData来进行数据的持久 化,CoreData的配置和使用步骤还是挺复杂的.但熟悉CoreData的使用流程后,CoreD ...

  4. mysql 中 select中 用case

    将 countertype 整数类型转成字符串类型 SELECT counterType, CASE counterType WHEN 1 THEN 'CTP'WHEN 2 THEN 'NULL'WH ...

  5. <2014 05 16> 线性表、栈与队列——一个环形队列的C语言实现

    栈与队列都是具有特殊存取方式的线性表,栈属于先进后出(FILO),而队列则是先进先出(FIFO).栈能够将递归问题转化为非递归问题,这是它的一个重要特性.除了FILO.FIFO这样的最普遍存取方式外, ...

  6. django 表单系统 之 forms.ModelForm

    继承forms.ModelForm类实现django的表单系统 有时,我们在前端定义的<form>表单和后端定义的model结构基本上是一样的,那么我们可以直接在后端定义model后,定义 ...

  7. Android系统移植与调试之------->如何添加一个adb wifi无线调试的功能【开发者选项】-【Wifi调试】

    首先弄懂怎么设置adb wifi无线调试的功能,如下所示. 1. 手机端开启adb tcp连接端口 :/$setprop service.adb.tcp.port :/$stop adbd :/$st ...

  8. Django - 权限(5)- 非菜单权限对应的一级菜单展开、面包屑导航

    一.非菜单权限对应的一级菜单展开 需求:客户列表和账单列表页面中都有添加按钮,当点击添加客户(或编辑客户.删除客户)时,客户列表所属的一级菜单展开,当点击添加账单(或编辑账单.删除账单)时,账单列表所 ...

  9. make编译六

    如果要使用隐含规则生成你需要的目标,你所需要做的就是不要写出这个目标的规则.那么,make 会试图去自动推导产生这个目标的规则和命令,如果make 可以自动推导生成这个目标的规则和命令,那么这个行为就 ...

  10. Mac 启动和关闭rabbitmq

    1.安装 brew install rabbitmq 2.启动及关闭RabbitMQ服务 前台启动 sudo ./rabbitmq-server    或 sudo su/usr/local/Cell ...