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 类对象就意味着取得了一个制定类的操作权。

相关文章
|
文字识别 API iOS开发
iOS小技能:iOS13 证件扫描 & 文字识别API
1. 应用场景:证件扫描、文字识别 2. 原理:利用iOS13 VNDocumentCameraViewController的证件扫描和VNRecognizeTextRequest文字识别功能进行实现
624 0
iOS小技能:iOS13 证件扫描 & 文字识别API
|
人工智能 文字识别 API
iOS MachineLearning 系列(4)—— 静态图像分析之物体识别与分类
本系列的前几篇文件,详细了介绍了Vision框架中关于静态图片区域识别的内容。本篇文章,我们将着重介绍静态图片中物体的识别与分类。物体识别和分类也是Machine Learning领域重要的应用。通过大量的图片数据进行训练后,模型可以轻易的分析出图片的属性以及图片中物体的属性。
675 0
|
存储 缓存 负载均衡
什么是CDN(内容分发网络)?
什么是CDN(内容分发网络)?
8473 7
|
存储 NoSQL 关系型数据库
Seata常见问题之使用了@GlobalTransactional出现空指针的错误如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
1191 0
|
SQL 监控 Java
Seata常见问题之报找不到全局事务可能已经完成如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
2233 0
|
存储 编解码 人工智能
讲一讲 NAS 网络存储(是什么,解决了什么问题)?
NAS 的全称是 Network Attached Storage,翻译成中文就是网络附加存储。我们来拆解一下就是网络、附加、存储。
7451 0
讲一讲 NAS 网络存储(是什么,解决了什么问题)?
|
JSON JavaScript 前端开发
JS的二进制家族:ArrayBuffer的具体介绍
ArrayBuffer 对象用来表示通用的、固定长度的原始二进制数据缓冲区。ArrayBuffer 不能直接操作,而是要通过类型数组对象 或 DataView 对象来操作,它们会将缓冲区中的数据表示为特定的格式,并通过这些格式来读写缓冲区的内容。
|
Java 开发者
Class 类对象的三种实例化模式|学习笔记
快速学习 Class 类对象的三种实例化模式
368 0
Class 类对象的三种实例化模式|学习笔记
|
iOS开发
iOS开发一款小巧简洁的日历控件
日历控件的设计思路
1529 0
|
测试技术 Android开发 开发者
遇到iOS Crash,该如何分析?
众所周知,Android App在机型兼容覆盖上面临非常大的挑战,一个根本原因就是由于Android生态的开放性,市场上充斥着数量巨大的各类Android设备,无法在浩如烟海的机型上做适配。 反观iOS生态,尽管整体上iOS App质量明显优于Android应用,但是从阿里云测移动质量中心的统计数据来看,依然有30%左右的iOS App存在崩溃、运行卡顿等严峻问题。
8806 0

热门文章

最新文章