- 浏览: 118187 次
- 来自: ...
文章分类
最新评论
J2SE 5.0 的角落
- 博客分类:
- 术
1,dynamic cast
类似C++的dynamic_cast<T*>操作符,C#的as操作符,Java 5.0提供了安全的dynamic cast功能,不同的是它以类库的形式提供的,并且类型不匹配时是要抛异常的,大大降低了可用性:
Class.cast
public T cast(Objectobj)
obj
- the object to be cast
ClassCastException
- if the object is not null and is not assignable to the type T.
2,返回值协变
interface SomeInterface{
Object get();
}
class CovariantImpl implements SomeInterface{
public String get(){
return "covariant";
}
}
public class TestUntitled2 extends TestCase {
public void testCovariant() {
SomeInterface obj = new CovariantImpl();
Assert.assertEquals("covariant", obj.get());
}
}
3,类型安全的代理
类似只读代理Collections.unmodifiableXXX(), 同步代理Collections.synchronizedXXX(), J2SE 5.0提供了类型安全的代理:Collections.checkedXXX()
4,Arrays.deepEquals()
不愧是放在java.util包里的
5,皇帝的“generic”新衣
-
加了一堆眼花缭乱的概念,却受“擦除法”实现方式所累,目前个人用到的最实用的功能仅仅是避免部分强制类型转换
-
因为要擦除,所以无法特化,只能使用继承加实例化模拟,彻底扼杀根据实参类型进行自动分派的一切想法
-
因为要擦除,所以与类型参数(TypeVariable)有关的一切运行期计算,如强制类型转换,都毫无意义
-
要想在泛型类方法里调用类型参数(TypeVariable)的某个业务方法,则类型参数必须<? extends SomeSuper>,一个推论就是<? extends MarkerInterface>在<MarkerInterface>面前毫无意义
-
讽刺的是,摆明了将问题扔给编译器解决,编译器却除了帮你强转,塞些TypeVariable信息外几乎没干什么事
-
而Class.forName()后,一切都不安全了
6,基于返回值的类型推导
不知算不算“擦除法”带来的特性
例一、Collections.emptyXXX()
emptyList
public static final <T> List<T> emptyList()
This example illustrates the type-safe way to obtain an empty list:
List<String> s = Collections.emptyList();Implementation note: Implementations of this method need not create a separate List object for each call. Using this method is likely to have comparable cost to using the like-named field. (Unlike this method, the field does not provide type safety.)
EMPTY_LIST
例二、一步一次推导
但如果其返回值用于另外一个函数的泛型参数,则必须用临时变量过渡一下,可能是因为不能同时进行两步推导
public class ConditionParser {
private ConditionParser(){
}
public static <T> Condition<T> deserialize(String condition){
....
}
}
List< Condition<T> > conditions = new ArrayList< Condition<T> >();
Condition<T> safe = ConditionParser.deserialize(condition.ToXML());
conditions.add(safe);//ok
List< Condition<T> > conditions = new ArrayList< Condition<T> >();
conditions.add(ConditionParser.deserialize(condition.ToXML()));//error
7,类型安全的Varargs
其实是数组的简写形式,因此是类型安全的,带来方便的同时,尚未发现有什么副作用
8,serialVersionUID
到今天了还用实现来暴露意图,殆也,用Annotation来实现也比现在顺眼一点,眼睁睁的看着它混在业务数据对象中
9,面向对象的enum
区别于C++中的enum,J2SE 5.0中的enum是符合“UML有限子类”情形的面向对象的实现(尽管看起来像“有限实例”):可以实现接口,可以有构造函数,可以有方法,成员,除了不能继承和被继承,构造函数必须私有,其它的和普通Java类差不多
(to be continue...)
(The Java Programming Language Notes )
发表评论
-
The Object Primer
2004-12-11 11:21 5891,书名 被翻译成“ ... -
错误处理规范
2004-12-11 16:47 757错误处理规范 〇、概念澄清 概念 解释 错误 ... -
Java,误解为何如此之深
2005-08-24 13:50 593前几天被电话面试,问J ... -
Java:画蛇添足的编码规范
2005-09-02 13:13 611前几天公司培训编码规范: 第n条: ... -
synchronized : 规则, 推论与实践
2007-07-23 22:32 46714.3.Synchronization. Rule ... -
交互设计: 股市帮凶
2008-05-04 21:30 642同事 Y 在线操作股票时, 把"买入"点成 ... -
交互设计: 火车上的厕所
2008-05-26 17:17 608有人在动车组的厕所前等了很久, 直到乘务员路过说厕所是被锁住了 ... -
设计原则与模式: 案例介绍--CppUnit
2008-06-01 20:15 617设计原则与模式: 案例介绍--CppUnit CppUnit ... -
工作流:形参,实参,相关数据
2004-12-11 11:40 672关于形参,实参,相关数据 一、形参(FormalParame ... -
工作流:第一次发版,过程总结
2004-12-11 11:42 710交流 即时讨论:小组成员咫尺之遥,有问题立即提出并解决 ... -
工作流:第一次发版,设计总结
2004-12-11 11:43 612整体 面向接口:消息系统,持久系统等,其实现都是可替换 ... -
Beyond Workflow : An Introduction to Vitria BusinessWare
2005-09-26 10:13 804一、简介 Busines ... -
Vitria BusinessWare: 存储与访问安全
2006-03-26 15:45 746事实上,BusinessWare使用LDAP做为存储机制和 ... -
Vitria BusinessWare: 平台与软件总线
2006-04-01 12:59 840经过一段时间的使用 ... -
Vitria BusinessWare: Web Services
2006-04-01 14:30 739BusinessWare的Web Services ... -
Web Services:自洽,编码,交换模型
2006-04-01 16:02 6771, 自洽 以前曾经写过: 目前WebServi ... -
Web Services:WSDL 1.1 规范中的几个错误
2006-04-01 16:40 721读完了WSDL 1.1的规范,令人惊讶的是发现似乎例子中有几个 ... -
C++/CLI:被忽视的集成技术
2006-05-17 20:02 755十几行代码,就使一个重要的旧系统组件,完全融入了基于.Ne ... -
AJP/JK:异构Web平台的集成技术
2006-05-25 21:44 710Tomcat Connector 可以将Tomcat ... -
Vitria BusinessWare: 事件与端口
2006-05-27 17:24 658Event BusinessWare是一个事件驱动的系统 ...
相关推荐
J2SE5.0_CN.chm API中文手册
J2SE 5.0,也被称为 Java 5.0,是 Java 发展历程中的一个重要版本,它引入了许多创新特性,极大地提升了开发效率和代码质量。此资源是一个中文版的 J2SE 5.0 API 文档,对于学习和理解 Java 5.0 的新特性和库函数...
标题:“J2SE 5.0新特性精解” 描述:“对J2SE 5.0中的一些新特性进行了精辟的讲解。” J2SE 5.0是Java Standard Edition的一个重大更新,它引入了一系列的新特性和改进,旨在提高开发效率、提升性能以及增强平台...
Java API官方文档中文版CHM版(J2SE5.0)是Java开发的重要参考资料,它详尽地阐述了Java 2 Standard Edition 5.0(通常称为Java 5.0)中的各种类库和接口。这个CHM(Compiled HTML Help)文件是一个经过编译的HTML...
J2SE5.0 API.chm,这个是英文的,等会再上传中文的,两个加在一起太大了 只好分开传了。。。
很好的j2se的API
标题与描述中的“J2SE 5.0- Java安全及网络计算的最新技术”强调了Java标准版(J2SE)在版本5.0中引入的安全性和网络功能的增强。这一版本标志着Java平台在安全性、加密技术以及网络通信方面的重要进展,为开发者...
j2se5.0中文版api第2部分,因为上传权限有限,给大家带来不便,请见谅
### J2SE 5.0 之 语言特性详解 #### 1.1 背景 随着 J2SE 5.0 的正式发布,Java 社区迎来了一个全新的里程碑。自 Java 1.4 升级至 5.0 版本以来,开发者们对新版本中的诸多改进和新特性充满了期待。为了更好地理解 ...
J2SE 5.0是这个平台的一个重要里程碑,它引入了许多关键的新特性,提升了Java的效率、可读性和可维护性。本教材源代码正是围绕这一版本展开,对于学习和理解Java编程具有很高的价值。 1. **自动装箱与拆箱**:J2SE ...
"upload.jar for J2SE 5.0" 是一个专为 Java 2 Standard Edition (J2SE) 5.0 版本设计的类库,主要用于处理文件上传功能。这个库是在 sun java jdk 1.5.0 开发环境中构建的,它提供了解决方案,使得开发者能够方便地...
对于java开发人员来说 没有一个帮助文档是很郁闷的 尤其对于自学的朋友们,今天得到一个中文版的J2SE5.0的API,不敢独自享用,共享出来给大家,分为2个部分part01和part02
J2SE(Java 2 Standard Edition)5.0是Java平台的一个重要版本,它在2004年发布,引入了许多新的特性和改进,对Java开发者来说具有里程碑式的意义。 Java API文档是开发者的必备工具,它详尽地记录了Java类库的所有...
J2SE 5.0,也被称为Java SE 5.0,是这个平台的一个重要版本,发布于2004年,它带来了许多重大的改进和新特性,对Java编程语言和Java虚拟机(JVM)进行了显著的升级。 1. **泛型(Generics)** J2SE 5.0引入了泛型...
提示:本人已将一次性可完整下载版上传,名称为:J2SE 5.0 API (中文版)方便网友下载! 很好用的J2SE 5.0 API,具有索引的功能!!! 下载前请注意:不过由于本人等级太低所以只能分3部分上传,劳烦您下载全部3部分...
提示:本人已将一次性可完整下载版上传,名称为:J2SE 5.0 API (中文版)方便网友下载! 很好用的J2SE 5.0 API,具有索引的功能!!! 下载前请注意:不过由于本人等级太低所以只能分3部分上传,劳烦您下载全部3部分...
提示:本人已将一次性可完整下载版上传,名称为:J2SE 5.0 API (中文版)方便网友下载! 很好用的J2SE 5.0 API,具有索引的功能!!! 下载前请注意:不过由于本人等级太低所以只能分3部分上传,劳烦您下载全部3部分...
真正的j2se api 5.0 中文版帮助,有需要的可以下载.
使用如JCreater这类的java简易编程软件,可以利用html格式的api帮助文档实现自动提示功能,不会再产生拼写错误问题! 用法(以JCreater):安装完成后,在提示信息中填入html格式api所在的目录即可。