文档章节

java之反射构造方法

1527
 1527
发布于 2015/10/11 19:18
字数 410
阅读 31
收藏 0
Class--->代表一类什么样的事物

Person p1 = new Person();
Person p2 = new Person();

反射获取类信息的形式

1.
Class cls1 = Date.class;//获取字节码1
Class cls2 = Person.class;//获取字节码2

2.
p1.getClass();

3.
Class.forName("java.lang.String");
问Class.forName("");的作用?返回字节码,1)如果类加载器已经被加载了,直接从JVM中读取信息 2)如果还未被加载,那么先加载到JVM中

public class ReflectTest {

	public static void main(String[] args) throws ClassNotFoundException {
		
		String str1 = "abc";
		Class cls1 = str1.getClass();
		Class cls2 = String.class;
		
		Class cls3 = Class.forName("java.lang.String");
		
		System.out.println(cls1==cls2);// true 说明加载的是同一份字节码
		System.out.println(cls1==cls3);// true
		
		System.out.println(cls1.isPrimitive()); //false 是否是一个基本的字节类型
		System.out.println(int.class.isPrimitive());// true 是一个基本的字节类型
		
		System.out.println(int.class == Integer.class); //false 
		System.out.println(int.class == Integer.TYPE);//true Integer.TYPE代表了Integer基本类型的字节码
		
		System.out.println(int[].class.isPrimitive());//false
		System.out.println(int[].class.isArray());//true 判断这个基本类型是不是数组
		
	}
} 

9个预定义Class实例对象
    参看Class.isPrimitive方法的帮助
    Integer.TYPE代表了Integer基本类型的字节码

数组类型的Class实例对象
    Class.isArray()
    
    只要在源程序中出现的类型,都有各自的Class实例对象,例如:int[] void ...
    
 Constructor类代表某个类中的一个构造方法
     得到某个类所有的构造方法
     Constructor[] constructors = Class.forName("java.lang.String").getConstructors();
     得到某一个构造方法
     Constructor constructor=Class.forName("java.lang.String").getConstructor(StringBuffer.class); 
     创建实例对象
     通常方式:String str = new String(new StringBuffer("abc"));
     反射方式:String str = constructor.newInstance(new StringBuffer("abc"));
     Class.newInstance()方法:
         例子:String obj = Class.forName("java.lang.String").newInstance();该方法内部先得到默认的构造方法,然后用构造方法创建实例对象


© 著作权归作者所有

共有 人打赏支持
1527
粉丝 6
博文 99
码字总数 40023
作品 0
成都
程序员
Java基础之反射(非常重要)

反射是框架设计的灵魂 (使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码)) 一、反射的概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道...

Java-老刘
05/15
0
0
Java入门需掌握的30个基本概念

(1)Easy:Java的语法比C++的相对简单,另一个方面就是Java能使软件在很小的机器上运行,基础解释其和类库的支持的大小约为40kb,增加基本的标准库和线程支持的内存需要增加125kb。 (2)分布...

风一样
2011/08/03
0
0
JAVA反射机制 访问对象私有变量和方法

jAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为jav...

梁某某
2013/10/16
0
1
【翻译】C#编程语言和JAVA编程语言的比较(上)

【翻译】C#编程语言和JAVA编程语言的比较(上) 原文地址:http://www.25hoursaday.com/CsharpVsJava.html 简介 C#语言是一门面向对象的语言,开发者可以使用C#和微软.NET平台快速构建各种应...

fbf
2013/08/13
0
0
从 java bean 的内省到 dbutils 的应用

java bean 内省的基础 java bean 的内省,其实可以算是反射的一种基础应用,关于 java 的反射,无非就是获得对应的类、属性、方法、修饰符等的应用,对于 java 的反射探讨,可以点击参考 ja...

peiquan
07/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

wait()被notify()后,接着执行wait()后面的语句

wait()被notify()后,接着执行wait()后面的语句

noteman
31分钟前
1
0
Ubuntu集群-使用MAAS开始裸机安装

Ubuntu使用MAAS装机的七个步骤。 1、Setup your hardware You need one small server for MAAS and at least one server which can be managed with a BMC. It is recommended to have the M......

openthings
43分钟前
3
0
OSX | SafariBookmarksSyncAgent意外退出解决方法

1. 启动系统, 按住⌘-R不松手2. 在实用工具(Utilities)下打开终端,输入csrutil disable, 然后回车; 你就看到提示系统完整性保护(SIP: System Integrity Protection)已禁用3. 输入reboot回车...

云迹
今天
4
0
面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
今天
4
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部