文档章节

java之反射构造方法

老渔民了
 老渔民了
发布于 2015/10/11 19:18
字数 410
阅读 74
收藏 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();该方法内部先得到默认的构造方法,然后用构造方法创建实例对象


老渔民了

老渔民了

粉丝 9
博文 121
码字总数 51620
作品 0
成都
程序员
私信 提问
加载中
请先登录后再评论。
Netty那点事(三)Channel与Pipeline

Channel是理解和使用Netty的核心。Channel的涉及内容较多,这里我使用由浅入深的介绍方法。在这篇文章中,我们主要介绍Channel部分中Pipeline实现机制。为了避免枯燥,借用一下《盗梦空间》的...

黄亿华
2013/11/24
2W
22
Flappy Bird(安卓版)逆向分析(一)

更改每过一关的增长分数 反编译的步骤就不介绍了,我们直接来看反编译得到的文件夹 方法1:在smali目录下,我们看到org/andengine/,可以知晓游戏是由andengine引擎开发的。打开/res/raw/at...

enimey
2014/03/04
5.9K
18
浅入浅出Android(003):使用TextView类构造文本控件

基础: TextView是无法供编辑的。 当我们新建一个项目MyTextView时候,默认的布局(/res/layout/activity_main.xml)中已经有了一个TextView: <TextView 运行效果如下: 修改其文本内容...

樂天
2014/03/22
619
1
Nutch学习笔记4-Nutch 1.7 的 索引篇 ElasticSearch

上一篇讲解了爬取和分析的流程,很重要的收获就是: 解析过程中,会根据页面的ContentType获得一系列的注册解析器, 依次调用每个解析器,当其中一个解析成功后就返回,否则继续执行下一个解...

强子哥哥
2014/06/26
712
0
mvc框架--Razor

Razor 是一个轻巧而优雅的servlet mvc框架 # 又一个轮子? no,写就她是为了证实我个人的某些想法,并在这个过程中练练手,这两种冲动碰撞在一起,自然而然地产生了Razor # Razor的现在和未来...

dtubest
2013/01/25
3K
0

没有更多内容

加载失败,请刷新页面

加载更多

什么是移动语义? - What is move semantics?

问题: I just finished listening to the Software Engineering radio podcast interview with Scott Meyers regarding C++0x . 我刚刚结束了对Scott Meyers进行的有关C ++ 0x的Software En......

技术盛宴
今天
24
0
算法与数据结构体系课

算法与数据结构体系课【超清原画】 下载地址:百度云盘 从0到工作5年,面试、进大厂、搭建知识体系、拓展技术上限 你不再需要其它算法与数据结构课程了 为什么学算法已经是一个不应该问的问题...

1930133570
今天
21
0
如何停止跟踪并忽略对Git中文件的更改? - How to stop tracking and ignore changes to a file in Git?

问题: I have cloned a project that includes some .csproj files. 我已经克隆了一个包含一些.csproj文件的项目。 I don't need/like my local csproj files being tracked by Git (or bei......

富含淀粉
今天
25
0
Redis阻塞

可能存在问题 内在原因:API或数据结构使用不合理、CPU饱和、持久化阻塞等 外在原因:CPU竞争、内存交换、网络问题等 问题处理: API或数据结构使用不合理,可能存在慢查询或者大对象: 发现...

游泳鸟
今天
17
0
OSChina 周五乱弹 —— 来人,上幼儿园老师跳舞的图!

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 小小编辑:《奇跡の海》- 坂本真綾 《奇跡の海》- 坂本真綾 手机党少年们想听歌,请使劲儿戳(这里) 巴蜀(@巴拉迪维)最近有点闹心了, @巴...

小小编辑
今天
64
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部