Class 类对象的三种实例化模式|学习笔记

简介: 快速学习 Class 类对象的三种实例化模式

开发者学堂课程【【名师课堂】Java 高级开发 Class 类对象的三种实例化模式】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/372/detail/4624


Class 类对象的三种实例化模式


具体内容

Class 类是描述整个类的概念,也是整个反射的操作源头,在使用 Class 类 的时候需要关注的是这个类的对象,这类的对象产生模式共三种:

 

·任何的实例对象可以通过 Object 类中的 getClass() 方法取得 Class 类的对象

 

注意:

在<>中绝大多数人会写上 Date,在反射的世界里,这种泛型使用度是有限的,一般处理这些往往用的是 Object

package cn. mldn. demo;

import java .util .Date;

public class  TestDemo  {

public static void main(String[ ] args) {

Class cls = new Date(). getClass() ;

另外还有个简单的方法:

叫 getName()

package cn. mldn. demo;

import java. util. Date;

public class TestDemo {

public static void main(String []1args) {

Classcls= new Date (). getClass();

System.out.println(cls. getName());

}

}

“类 .class”:直接根据某一个具体的类来取得 Class 类的实例化对象;

package cn. mldn. demo;

import java. util. Date;

public class TestDemo {

public static void main(String []1args) {

Classcls= Date class;    // 不需要实例化Date类对象

System.out.println(cls. getName());

}

}

使用 Class 类提供的方法:

public static ClassforName(String className) throws ClassNotFoundException;

范例:使用 forName() 方法

package cn.mldn.demo;

public  class  TestDemo {

public static void main(string[ ] args) throws Esception {

Classcls =Class.forName(“java.util.date);     //直接使用字符串描述要使用的类

System.out.println(cls.getName());

}

}

除了第一种形式会产生 Date 类的实例化对象之外,其他两种都不会产生 Date 类的实例化对象。

由此得出 Class 对象的一个最直接的好处:

可以直接通过反射实例化对象,在 Class 类里面定义有如下一个方法:

Public T newInstance () throws

InstantiationException,IllegalAccessException

范例:反射实例化对象

package cn.mldn.demo;

public  class  TestDemo {

public static void main(string[ ] args) throws Esception {

Classcls =Class.forName(“java.util.date);     //直接使用字符串描述要使用的类

Object obj = cls.newInstance();     //实例化对象,等价:new java. util. Date()

System .out. println(obj);

}

}

除了关键字 new 外,对于对象的实例化模式有了第二种做法,通过反射进行


总结

取得了 Class 类对象就意味着取得了一个制定类的操作权。

相关文章
|
6月前
|
Java
java反射-获取类的Class对象方式
java反射-获取类的Class对象方式
|
设计模式 Python
我为什么要创建一个不能被实例化的类
我为什么要创建一个不能被实例化的类
79 0
|
Java 开发者
Class 类对象的三种实例化模式|学习笔记
快速学习 Class 类对象的三种实例化模式
182 0
Class 类对象的三种实例化模式|学习笔记
|
C++ 小程序
c++类的实例化,有没有new的区别
A a; A * a = new a(); 以上两种方式皆可实现类的实例化,有new的区别在于: 1.前者在堆栈中分配内存,后者为动态内存分配,在一般应用中是没有什么区别的,但动态内存分配会使对象的可控性增强。
1258 0
|
前端开发 开发者
class-子类访问父类上的实例方法|学习笔记
快速学习 class-子类访问父类上的实例方法
125 0
|
前端开发 JavaScript 开发者
class-使用 extends 实现子类继承父类|学习笔记
快速学习 class-使用 extends 实现子类继承父类
119 0
探秘static——类不需实例化就能用?
一般情况下,需要用到某个类的时候,都必须先实例化这个类,才能对其进行调用。在编程过程中发现,有些类不用实例化就可以直接拿来使用,使用它的字段、方法等等。
探秘static——类不需实例化就能用?
|
Java 开发者
Class 类对象的三种实例化模式|学习笔记
快速学习 Class 类对象的三种实例化模式
428 0
 Class  类对象的三种实例化模式|学习笔记
|
JavaScript 前端开发
Class:向传统类模式转变的构造函数
前言 JS基于原型的‘类’,一直被转行前端的码僚们大呼惊奇,但接近传统模式使用class关键字定义的出现,却使得一些前端同行深感遗憾而纷纷留言:“还我独特的JS”、“净搞些没实质的东西”、“自己没有类还非要往别家的类上靠”,甚至是“已转行”等等。
681 0
获得一个类的类对象有哪些方式?
方法1:类型.class,例如:String.class 方法2:对象.getClass(),例如:”hello”.getClass() 方法3:Class.
1875 0