Java 基础【11】.class getClass () forName() 详解
类名.class是Class对象的句柄,每个被加载的类,在jvm中都会有一个Class对象与之相对应。
如果要创建新的对象,直接使用Class对象的局部class.forName就可以了,不需要用new 类名。
每个 class 都有一个相应的 Class 对象,编译完成后,生成的.class文件就表示 class 对象,用来表示这个类的类型信息。获得Class实例的三中方式:
- 利用对象调用getClass()方法获取该对象的Class实例
- 使用Class的静态方法forName(),用类的名字获取一个Class实例
- 运用.calss的方式获取Class实例,对基本数据类型的封装类,还可以采用.TYPE来获取对应的基本数据类型的Class实例
- package my.java.code;
- public class ClassInitTest {
- public static void main(String[] args) {
- Point point = new Point();
- Class pointClass = point.getClass();
- System.out.println("1.利用对象调用getClass()方法获取该对象的Class实例:" + pointClass.getName());
- try {
- Class forName = Class.forName("my.java.code.Point");
- System.out.println("2.使用Class的静态方法forName(),用类的名字获取一个Class实例:" + forName.getName());
- } catch (Exception e) {
- e.printStackTrace();
- }
- Class aClass = Point.class;
- System.out.println("3.运用.class 的方式获取Class实例(类):" + aClass.getName());
- Class intClass = int.class;
- System.out.println("4.运用.class 的方式获取Class实例(基本类型):" + intClass.getName());
- Class typeClass = Integer.TYPE;
- System.out.println("5.运用.type 的方式获取Class实例(基本数据类型的封装类):" + typeClass.getName());
- Class integerClass = Integer.class;
- System.out.println("5.运用.class 的方式获取Class实例(基本数据类型的封装类):" + integerClass.getName());
- //当new Point()的时候加载这个类,用forName构造实例的时候也加载该类。
- System.out.println("before new Point()");
- new Point();
- System.out.println("after new Point()");
- try {
- Class.forName("my.java.code.Line");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
在运行期间,如果我们要产生某个类的对象,java虚拟机会检测该类型的Class对象是否已被加载。
如果没有加载,java虚拟机会根据类的名称找到.class文件并加载它。
一旦某个类型的Class对象已经被加载到内存,就可以用它来产生该类型的所有对象。
newInstance()调用内中缺省的构造方法。
newInstance()调用类中缺省的构造方法,如果要实例的对象中有了自己定义的构造方法(除重写的和默认构造方法相同的构造方法外)
创建此 Class 对象所表示的类的一个新实例
- package my.java.code;
- public class Point {
- static {
- System.out.println("loading point......");
- }
- int x, y;
- }
当我们在命令提示符下面编译好该类之后,输入java ClassTest Point的时候,此时会输出Loading point和x=0,y=0
Java 基础【11】.class getClass () forName() 详解的更多相关文章
- 《Java基础——break与continue用法详解》
Java基础--break与continue用法详解 1. break语句: 规则: 1. 仅用于循环语句和switch语句当中,用于跳出循环. 2. 当只有一层循环时,则直接跳出循环,不 ...
- Java基础篇(JVM)——字节码详解
这是Java基础篇(JVM)的第一篇文章,本来想先说说Java类加载机制的,后来想想,JVM的作用是加载编译器编译好的字节码,并解释成机器码,那么首先应该了解字节码,然后再谈加载字节码的类加载机制似乎 ...
- [java基础] 002 - 位运算符的详解和妙用
一:位运算符详解 位运算符主要用来对操作数二进制的位进行运算.按位运算表示按每个二进制位(bit)进行计算,其操作数和运算结果都是整型值. Java 语言中的位运算符分为位逻辑运算符和位移运算符两类, ...
- Java 基础【08】.class getClass () forName() 详解
类名.class是Class对象的句柄,每个被加载的类,在jvm中都会有一个Class对象与之相对应. 如果要创建新的对象,直接使用Class对象的局部class.forName就可以了,不需要用ne ...
- Java基础(basis)-----抽象类和接口详解
1.抽象类 1.1 abstract修饰类:抽象类 不可被实例化 抽象类有构造器 (凡是类都有构造器) 抽象方法所在的类,一定是抽象类 抽象类中可以没有抽象方法 1.2 abstract修饰方法:抽象 ...
- Java工程师 基础+实战 完整路线图(详解版)
Java工程师 基础+实战 完整路线图(详解版) Java 基础 Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的 oop 特性:封装.继承.多态.此外还有泛型.反射 ...
- 《手把手教你》系列基础篇(九十五)-java+ selenium自动化测试-框架之设计篇-java实现自定义日志输出(详解教程)
1.简介 前面宏哥一连几篇介绍如何通过开源jar包Log4j.jar.log4j2.jar和logback实现日志文件输出,Log4j和logback确实很强大,能生成三种日志文件,一种是保存到磁盘的 ...
- 牛客网 Java 工程师能力评估 20 题 - 详解
牛客网 Java 工程师能力评估 20 题 - 详解 不知在看博客的你是否知道 牛客网,不知道就太落后了,分享给你 : 牛客网 此 20 题,绝对不只是 20 题! 免责声明:本博客为学习笔记,如有侵 ...
- Java 反射 设计模式 动态代理机制详解 [ 转载 ]
Java 反射 设计模式 动态代理机制详解 [ 转载 ] @author 亦山 原文链接:http://blog.csdn.net/luanlouis/article/details/24589193 ...
随机推荐
- xcode .h文件编译时 版本不正确
在终端里面 执行下面的命令 rm -rf ~/Library/Developer/Xcode/DerivedData/ModuleCache/*
- dea工具debug断点红色变成灰色
没事别瞎点,禁用了断点当然不走了
- 在Hadoop中重写FileInputFormat类以处理二进制格式存储的整数
近期開始使用MapReduce,发现网上大部分样例都是对文本数据进行处理的,也就是说在读取输入数据时直接使用默认的TextInputFormat进行处理就可以.对于文本数据处理,这个类还是能满足一部分 ...
- HTTP的KeepAlive是开启还是关闭?
HTTP的KeepAlive是开启还是关闭? http://itindex.net/detail/50719-http-keepalive 1.KeepAlive的概念与优势 HTTP的KeepAli ...
- 我对NHibernate的感受(3):有些尴尬的集合支持
既然是一个ORM框架,那么自然是将O这一端映射R上.至于集合,是O这方面最常见,也是R这一边非常容易表示的关系.例如,一个问题(Question)可以包含多个回答(Answer),于是我的代码里就有这 ...
- Access control configuration prevents your request from being allo
我发现在在XP环境下我输入网易的220.181.28.42也找不到网页,就跟在LINUX下一样 都揭示: 错误 您所请求的网址(URL)无法获取 --------------------------- ...
- Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程
在本系列的上一篇文章中,我们学习了Glide的基本用法,体验了这个图片加载框架的强大功能,以及它非常简便的API.还没有看过上一篇文章的朋友,建议先去阅读 Android图片加载框架最全解析(一),G ...
- 《JavaScript网页特效经典300例》
<JavaScript网页特效经典300例> 基本信息 作者: 杨磊 张志美 丛书名: 百炼成钢系列丛书 出版社:电子工业出版社 ISBN:9787121220524 上架时间:20 ...
- C结构体
什么是结构体? 简单的来说,结构体就是个能够包含不同数据类型的一个结构,他是一种能够自己定义的数据类型,他的特点和数组主要有两点不同,首先结构体能够在一个结构中声明不同的数据类型,第二相同结构的结构体 ...
- 安装在virtualbox中的kali linux如何配置无线网卡
1.安装在virtualbox里的kali无法使用所在物理机的wifi 2.必须通过usb方式,如图所示 3.所使用的usb无线网卡必须是kali2.0支持的 4.我的型号是TL-WN823N 2.0 ...