Java中的Class类有两个重要的方法:cast()和asSubclass()。这两个方法都是用于Class类进行运行时(run-time)阶段的类型转换的。下面来看看他们的定义和使用:

第一个方法asSubclass()

public Class extends U> asSubclass(Class clazz)

Casts thisClassobject to represent a subclass of the class represented by the specified class object. Checks that that the cast is valid, and throws aClassCastExceptionif it is not. If this method succeeds, it always returns a reference to this class object.

This method is useful when a client needs to "narrow" the type of aClassobject to pass it to an API that restricts theClassobjects that it is willing to accept. A cast would generate a compile-time warning, as the correctness of the cast could not be checked at runtime (because generic types are implemented by erasure).

Returns:

thisClassobject, cast to represent a subclass of the specified class object.

Throws:

ClassCastException- if thisClassobject does not represent a subclass of the specified class (here "subclass" includes the class itself).

Since:

1.5

使用实例:

Class> c = Class.forName(“MyClass”);

Class child = c.asSubClass(Father.class);  // “Child” extends “Father”

第二个方法cast()

publicTcast(Objectobj)

Casts an object to the class or interface represented by thisClassobject.

Parameters:

obj- the object to be cast

Returns:

the object after casting, or null if obj is null

Throws:

ClassCastException- if the object is not null and is not assignable to the type T.

Since:

1.5

使用实例:

这个函数可以简单的理解为将一个Object类型的对象转换成Class表示的类型的对象(其实在java中Class类就是所有类型字节码的一种抽象,或者简单理解为在java中就是用于来说明类型的类型,因为java中一切都是类,所以“类”(类型)也是是类,而这个类就是Class)。

Class c = String.class;

Object o = “hello world!”;

String s = c.cast(o);      // 将Object类型转成这里的Class表示的类型,即String类型

Java中的Class类可以表示java中的所有类型,主要通过Class中的T来指定具体表示的是哪种类型。

java程序中出现两个class,Java中Class类中两个值得注意的进行类型动态转换的方法...相关推荐

  1. 编写高质量代码改善java程序的151个建议——[110-117]异常及Web项目中异常处理

    编写高质量代码改善java程序的151个建议--[110-117]异常及Web项目中异常处理 原创地址:http://www.cnblogs.com/Alandre/(泥沙砖瓦浆木匠),需要转载的,保 ...

  2. java编译程序的基本命令是什么,【填空题】Java中编译java 程序的命令是 1 ,执行java程序的命令是 java 。...

    [填空题]Java中编译java 程序的命令是 1 ,执行java程序的命令是 java . 更多相关问题 [多选] 下列骨折中属于关节外骨折的是(). [多选] 骨折早期局部的并发症包括(). [多 ...

  3. 解释java程序所使用的命令是,Java程序的执行原理以及解释说明

    在初学Java的时候,我们安装完Java的开发环境后,就可以通过记事本等编辑工具编写程序了.推荐在Windows操作系统中使用EditPlus工具进行编写.由于我使用的是Mac OS,所以,我使用Su ...

  4. 【Java开发语言 01】第一章 Java语言概述(基础常识+Java语言概述+Java程序运行机制及运行过程+Java语言环境的搭建+开发体验hello world+错误:编码GBK的不可映射字符)

    java入门-第一章Java语言概述 1基础常识 软件开发 人机交互方式 常用的DOS命令(win系统,有一些直接通过命令执行的) 2 Java语言概述 什么是计算机语言 关于面向对象和面向过程 Ja ...

  5. java程序员烂大街了吗?java入坑之前先来看看行情

    java程序员烂大街了吗?下面就跟着小编一起来看看吧! 任何东西的存在.火与不火都是一个供求关系决定的.有需求.有市场.有利益.再加上有合适工具.才会有人去做. 而java却恰恰符合这一点.为什么这么 ...

  6. Java程序员的认证Sun Certified JAVA Programmer(SCJP)

    Java程序员的认证Sun Certified JAVA Programmer(SCJP) 课程:SL-275 JAVA语言编程 本课程使学员掌握如何使用标准JAVA Development Kit, ...

  7. 学习Java第一天:1、Java是什么?2、面向对象的编程思想的特点 3、Java的开发工具 4、安装JDK和配置环境变量 5、Java程序的运行过程 6、Java语言的特点

    目录 1.Java是什么? 2.面向对象的编程思想的特点 3.Java的开发工具 4.安装JDK和配置环境变量 5.Java程序的运行过程 6.Java语言的特点 1.Java是什么? java是一门 ...

  8. 新手Java程序员找工作更看重Java项目经验?

    动力节点IT培训,全真项目实操实训,贯穿八大行业,彻底帮助学员摆脱纸上谈兵的尴尬,一技成,天下行. 新手Java程序员找工作更看重Java项目经验?这个问题,想必是很多学Java的朋友也特别好奇的地方 ...

  9. java类图设计题_试题七阅读下列说明、图以及Java程序。[说明]某订单管理系统的部分UML类图如 - 信管网...

    试题七 阅读下列说明.图以及Java程序. [说明] 某订单管理系统的部分UML类图如下图所示. 上图中,Product表示产品,ProductList表示所销售产品的列表,Order表示产品订单,O ...

最新文章

  1. 文本纠错与BERT的最新结合,Soft-Masked BERT
  2. c语言是一门对标识符大小写敏感的程序设计语言,《C语言程序设计》课程自测题...
  3. Python实现PS滤镜Fish lens图像扭曲效果示例
  4. php获取数组中,相同键名的键值之和
  5. ISCC2021 美人计
  6. Win的phpstudy安装VC报错
  7. CentOS7防火墙firewalld和iptable的设置和使用
  8. 前端模块规范AMD/UMD/CommonJs
  9. 话里话外:企业内控的灵魂——企业文化
  10. 麻省理工学院计算机专业2018,麻省理工学院专业排名一览及最强专业推荐(QS世界大学排名)...
  11. 计算机java培训总结,java培训总结范文
  12. redis主从复制_技术干货分享:一文了解Redis主从复制
  13. OpenZeppelin集成Truffle编写健壮安全的合约
  14. python爬虫安装了pycharm还要安装什么_Pycharm安装与使用
  15. 相位一致性的基本原理及应用问题
  16. LimeSDR环境的安装
  17. emi滤波matlab,【原创】EMI 滤波器设计从入门到精通(三)
  18. Spring 最新漏洞修复
  19. 朱松纯领衔、北大清华超强联合,开启「通用人工智能实验班」
  20. java 解析 svg文件_java – 如何加载和解析SVG文档

热门文章

  1. 使用Maven构建Dubbo服务的可运行jar包
  2. Postgis常用函数
  3. 关于c++的文件编码的研究
  4. (转)Android 常用 adb 命令总结
  5. cat /proc/maps 进程内存映射【转】
  6. js 1 声明变量 数据类型
  7. RHEL7 - 从命令行管理文件
  8. 思考ANDROID架构(4):HOW-TO, 如何从API洞悉软件的话语权
  9. Windows XP字体模糊
  10. 手势识别兼容Android 1.x和2.x的代码【转】