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. .NET面试

    作者:最佳菜鸟链接:https://zhuanlan.zhihu.com/p/22224795来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 1 .术语 面试出现频率: ...

  2. AsyncTaskLoader设计原理大揭秘

    简介 在Android异步处理之AsyncTaskLoader简单使用中我简单的介绍了一下AsyncTaskLoader的基本用法和使用场景,对AsyncTaskLoader还不是很熟悉的小伙伴可以先 ...

  3. 一起做RGB-D SLAM调试

    最近在学习高博的一起做RGB-D SLAM第一版本,其中调试出现了挺多问题,百度查找许多资料, 最后调通所有程序,记录以下运行环境. 高博一起做RGB-D SLAM系列主页: http://www.c ...

  4. mysql_表内容_操作

    1.增 语法:insert into 表 (列名,列名...) values (值,值...) # 插入单条数据 insert into 表 (列名,列名...) values (值,值...) # ...

  5. JS不改HTML任何代码就达到动态效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DT ...

  6. Django组件 - Django请求生命周期、中间件

    一.Django请求生命周期 在学习中间件之前,先了解一下Django的请求生命周期,如下图: 1)client代表浏览器,浏览器内部为我们封装了socket,Django的WSGI模块也封装了soc ...

  7. Unity3d依赖于平台的编译

    Unity的这一功能被命名为"依赖于平台的编译". 这包括了一些预编译处理指令,让你能够专门的针对不同的平台分开编译和运行一段代码. 此外,你能够在编辑器下运行一些代码用于測试而不 ...

  8. Linux入门-教学视频学习笔记

    视频地址:https://www.bilibili.com/video/av18156598 1.sudo权限 比如说关机.重启.添加其他用户. 2.Shell是什么? 这是一个结构图,比如在外层应用 ...

  9. 利用反射快速给Model实体赋值

    试想这样一个业务需求:有一张合同表,由于合同涉及内容比较多所以此表比较庞大,大概有120多个字段.现在合同每一次变更时都需要对合同原始信息进行归档一次,版本号依次递增.那么我们就要新建一张合同历史表, ...

  10. 基于WinIO 3.0实现驱动级键盘模拟输入

    基于WinIO 3.0实现驱动级键盘模拟输入 一个业务场景需要使用驱动级的键盘模拟,折腾了2天,总结一下,为后人节省时间. 限制条件: 1.需要真实PC机,虚拟机不行 2.仅支持PS/2 键盘(指外接 ...