文档章节

java之反射构造方法

1527
 1527
发布于 2015/10/11 19:18
字数 410
阅读 31
收藏 0
点赞 0
评论 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
粉丝 5
博文 83
码字总数 28850
作品 0
成都
程序员
Java基础之反射(非常重要)

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

Java-老刘 ⋅ 05/15 ⋅ 0

初识Java Reflection

学习Java的时间也过了这么久了,反射这个名词耳熟于心,在与小伙伴讨论时也能时常提起。说来惭愧,一直以来浮在技术表面,总是以了解了某个新技术的名词为傲,但当被问起其底层实现时却无话可...

代码虐我千百遍 ⋅ 05/17 ⋅ 0

Java反序列化漏洞的原理分析

  *本文原创作者:Moonlightos,本文属FreeBuf原创奖励计划,未经许可禁止转载   世界上有三件事最难:      把别人的钱装进自己的口袋里   把自己的想法装进别人的脑袋里   让自...

FreeBuf ⋅ 05/04 ⋅ 0

React Native通信原理源码分析二

本篇文章已授权微信公众号 JueCode 独家发布 在上一篇中分析了Native调用JavaScript的原理,这一篇我们分析下JavaScript调用Native的原理。上一篇提到的内容这里就不重复了,建议小伙伴们先看...

juexingzhe ⋅ 04/16 ⋅ 0

两道面试题,带你解析Java类加载机制

文章首发于【博客园-陈树义】,点击跳转到原文《两道面试题,带你解析Java类加载机制》 在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如下面这道题: 请写出最后的输出字符...

陈树义 ⋅ 06/12 ⋅ 0

Java反射实践:从反射中理解class

写在前面 今天在需求评审的时候,遇到了挺有意思的要求。需求是什么样子就不说了。总之完成这个需求需要一个调用系统api的操作。然而这个api因为并不稳定的原因。被谷歌hide掉了。 这个时候我...

MDove ⋅ 04/11 ⋅ 0

Thread源码分析-java8

1.Thread特性分析 守护线程Daemon 2种方式创建一个可执行线程 线程名字 线程ID 线程优先级 线程状态6种 浅拷贝 2. 类、方法、字段分析 实现接口和继承类 只实现了一个接口Runnable threadLo...

caoxiaohong1005 ⋅ 05/14 ⋅ 0

两道面试题带你解析 Java 类加载机制

在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如下面这道题: class Grandpa{ } class Father extends Grandpa{ }class Son extends Father{ }public class Initialization...

⋅ 06/13 ⋅ 0

Java核心技术卷1 重读经典小记

Java基础 java中的int类型固定为32位 三个特殊的浮点值:正无穷大(),负无穷大()和NaN()。 在java中,char类型用UTF-16编码描述一个代码单元.不建议在程序中使用char类型. boolean类型的f...

java_龙 ⋅ 02/27 ⋅ 0

为什么我墙裂建议大家使用枚举来实现单例

我们知道,单例模式,一般有七种写法,那么这七种写法中,最好的是哪一种呢?为什么呢?本文就来抽丝剥茧一下。 哪种写单例的方式最好 在StakcOverflow中,有一个关于What is an efficient ...

冷_6986 ⋅ 06/13 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

笔试题之Java基础部分【简】【一】

基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法,其他 1.length、length()和size() length针对...

anlve ⋅ 19分钟前 ⋅ 1

table eg

user_id user_name full_name 1 zhangsan 张三 2 lisi 李四 `` ™ [========] 2018-06-18 09:42:06 星期一½ gdsgagagagdsgasgagadsgdasgagsa...

qwfys ⋅ 43分钟前 ⋅ 0

一个有趣的Java问题

先来看看源码: public class TestDemo { public static void main(String[] args) { Integer a = 10; Integer b = 20; swap(a, b); System.out......

linxyz ⋅ 48分钟前 ⋅ 0

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 今天 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 8

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部