从头认识java-12.2 Class对象(4)-泛化
来源:互联网 发布:微软手写笔记软件 编辑:程序博客网 时间:2024/04/29 03:12
这一章节我们来讨论一下Class对象的泛化。
1.为什么需要泛化?
代码在编译时就可以进行类型检测,不需要等到运行时才检测类型。
2.例子
package com.ray.ch12;public class Test {public static void main(String[] args) {try {Class AClass1 = Class.forName("com.ray.ch12.A");AClass1 = B.class;Class<A> AClass2 = (Class<A>) Class.forName("com.ray.ch12.A");// AClass2 = B.class;//error} catch (ClassNotFoundException e) {e.printStackTrace();}}}class A {}class B {}
上面的例子我们看一下中间的代码,一开始没有使用泛化的时候,B.class可以赋值给AClass1,但是当我们给AClass2泛化的时候,B.class就不可以赋值给AClass2。
但是在运用Class.forName的很多时候我们都不知道类型的,因此都会使用通配符“?”。
3.通配符“?”
package com.ray.ch12;public class Test {public static void main(String[] args) {try {Class<?> AClass1 = Class.forName("com.ray.ch12.A");} catch (ClassNotFoundException e) {e.printStackTrace();}}}class A {}
使用通配符使得代码更加安全,不会出现警告信息。
而且通配符搭配extend,可以把类型的范围圈定在一个区间里面。
package com.ray.ch12;public class Test {public static void main(String[] args) {try {Class<? extends Father> AClass1 = (Class<? extends Father>) Class.forName("com.ray.ch12.Sub");} catch (ClassNotFoundException e) {e.printStackTrace();}}}class Father {}class Sub extends Father {}
使用泛化主要是为了在编译时能够进行类型检测,不需要到运行时才知道有问题。
总结:这一章节主要介绍了泛化的原因、使用情况以及泛化的通配符。
这一章节就到这里,谢谢。
-----------------------------------
目录
2 0
- 从头认识java-12.2 Class对象(4)-泛化
- 从头认识java-12.2 Class对象(3)-.class
- 从头认识java-12.2 Class对象(1)-简介
- 从头认识java-12.2 Class对象(2)-使用与注意点
- 从头认识java-1.8 创建和操纵对象(1)
- 从头认识java-1.8 创建和操纵对象(2)
- 从头认识java-17.4 详解同步(3)-对象锁
- Class对象的泛化
- 从头认识java-1.2 对象-服务提供者
- 从头认识java-6.6 final(4)-类与忠告
- 从头认识java-1.5 继承(1)
- 从头认识java-1.5 继承(2)
- 从头认识java-5.2 包(package)
- 从头认识java-6.1 聚合(aggregation)
- 从头认识java-9.8 栈(Stack)
- 从头认识java-15.6 队列(Queue)
- 从头认识java-目录
- Class对象以及泛化的Class引用
- POJ 3258 River Hopscotch(二分搜索,最大化最小值)
- select语句一些要点(一)
- “优秀IT工程师”是什么样的?
- leetcode Implement Trie (Prefix Tree)
- theano.tensor模块安排
- 从头认识java-12.2 Class对象(4)-泛化
- php代码注释
- Visual Studio单元测试命令行方式之二
- 头疼的Bug解决之“\\|”
- hdoj 4493 Tutor 【水题】
- ecshop后台通过ajax搜索原理
- 20_Java 流(Stream)、文件(File)和IO
- Java 异常和文件
- Linux下操作Mysql类