- 浏览: 118225 次
- 来自: ...
文章分类
最新评论
1,static member
可使用该类对象的空引用来引用该类static member
SomeClass obj = null;
obj.staticMethod();
obj.staticData = 1;
用对象引用静态成员是不被推荐的,但为什么不像C#那样禁止掉呢?
2,多重继承
面对从多个接口继承而来的签名相同的方法,子类似乎只能提供一份实现,这样语义的正确性是如何保证的呢?C#可以在子类中为从多个接口继承而来的签名相同的方法各提供一份实现
3,局部类、匿名类、接口内部类
语言在设计方面提供的创新的语法设施,唯一的问题是不要滥用
4,混乱的数组
似乎违反了那句“装苹果的篮子不是装水果的篮子”,在需要基类数组的地方可以传递子类数组,丧失了编译期类型安全性,通过运行时异常来避免错误
5,求值顺序
明确规定了从左至右,善莫大焉
6,作用域
局部变量、参数能够屏蔽成员变量
局部变量不能与参数同名
更加局部的变量不能与外围局部变量同名
善莫大焉
7,逗号表达式
没有逗号表达式,for里面那个不算
8,break label
功能强大,代替flag,goto
9,异常
相对于返回错误代码来说,异常就是那个层次的AOP
10,异常声明与返回值的不同待遇
相同的是都不能做为overload的依据,不同的是override时,异常声明可以被放宽为子类,返回值却不能基于同样的理由放宽为子类,即协变
11,类锁与实例锁
互不相干
12,服务端同步与客户端同步
前者主要保护自己的内部数据,后者主要保证调用序列
13,main
Everything has a begin, has an end-------Matrix Revolution
我猜中了开头,却猜不到这结局----仙履奇缘
Java程序以main始,却未必以main终,直到最后一个user线程退出;?假若main启动了一个user线程,该线程又启动了一个,又启动了一个,则虽我之死,有子存焉;子又生孙,孙又生子;子又有子,子又有孙。子子孙孙,无穷匮也
先有鸡还是先有蛋?人的起源,生命的起源到底如何?或许有一天人们追溯到极点,却发现不过是JVM启动了main,世界毁灭时,不过是JVM崩溃了
扯远了,.Net的线程与此类似
14,J2SE 1.5的倒退
静态引入 Static Import
格式化的输出 Formatted Output
格式化的输入 Formatted Input
不定参数 Varargs
简直不敢相信,宁肯学C也不学C++
15,Proxy
当年C++中引入template,只是为了Generic Programming,却无意中发现了其Generative Programming的强大功能;不知道Java中的Proxy最初的意图是什么,却引起了Generative Programming另外一种形式--AOP的风潮
16,ClassLoader
在程序中开个后门,某个类的字节码从我的个人网站上下载,别被客户发现,以后想起来就改改,呵呵
17,语言、库、平台,模糊的边界
字符串连接操作符“+”,是语言的一部分还是库的一部分?
序列化/反序列化时那个可被虚拟机调用的私有的方法,是语言的一部分还是库的一部分?
SoftRefrence、WeakRefrence等被虚拟机用来处理对象引用这样的核心语言特性的类,是语言的一部分还是库的一部分?
Java不是平台无关的,它本身就是个平台;不是说它不好,只是和传统的语言有这样一些区别
18,@deprecated
比起XDoclet等工具,.Net的属性等特性,它更早的触动了Java的神经:注释居然影响了编译器的行为!总算发展出了带有标注的Java
19,override的不同理念
Java/C#:只要访问权限允许,就可以调用重写的方法,不管子类对象构造出来没有
C++:只要子类对象构造出来了,就可以调用重写的方法,不管访问权限
造成的后果就是:
Java/C#:在基类构造函数里调用方法,只要子类有权限覆写,就会调到子类的实现
C++:在基类构造函数/析构函数里调用的方法永远都是基类的实现,不会调到子类;在其它方法里面永远都是调到子类的覆写实现,不管是不是private
20,IO
字节是没语义的,因此叫Stream
字符是有语义的,因此叫Reader与Writer
需要将没语义的适配为有语义的,叫InputStreamReader,OutputStreamWriter
实用的,叫DataXXX,对象序列化的,叫ObjectXXX
21,java.io.File
放错了地方,实际是文件系统的抽象,跟IO没什么太大关系,应放到系统包里,跟Thread之类并列
22,Collections
一般的设计原则是子类重写方法的前置条件应弱于父类方法,但Collection及其子类适时的没有遵守这个原则,以此证明了任何原则都有适用范围;Collection的设计目的是尽可能通用,而不是运行时的多态,你仍然需要选择合适的具体的数据结构,尽管它有时只是通过Collection接口来引用
23,Iterator
不同于STL,Iterator提供了内部安全的Remove(),部分还提供了Add();但遍历终归是不安全的,又一次不同于STL,Iterator自己能感知外界变化,抛出异常来自我保护,而不是产生未定义行为
24,Timer(),Timer(true)
最常用的却不是最方便的,不得不记住参数;可以用两个创建方法,可以用两个子类,就算用参数,也应该用枚举代替布尔,噢,忘了1.5之前没有枚举,那就静态常量吧,new Timer(Timer.DEAMON)和new Timer(true),哪个更清晰?
25,脆弱的private
除了序列化/反序列化时访问权限被平台破坏,在缺省安全设置下,Class.newInstance()也能够构建ctor声明为private的类的实例,带来的效果就是,希望强迫客户代码使用IoC原则的开发者,可用放心的将bean的ctor声明为private了
(The C# Programming Language Notes)
(J2SE 5.0 的角落)
发表评论
-
The Object Primer
2004-12-11 11:21 5901,书名 被翻译成“ ... -
错误处理规范
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 619设计原则与模式: 案例介绍--CppUnit CppUnit ... -
工作流:形参,实参,相关数据
2004-12-11 11:40 672关于形参,实参,相关数据 一、形参(FormalParame ... -
工作流:第一次发版,过程总结
2004-12-11 11:42 711交流 即时讨论:小组成员咫尺之遥,有问题立即提出并解决 ... -
工作流:第一次发版,设计总结
2004-12-11 11:43 613整体 面向接口:消息系统,持久系统等,其实现都是可替换 ... -
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是一个事件驱动的系统 ...
相关推荐
从这本书的标签“java jdk7 jdk javanotes”可以推测,它主要针对Java 7版本,包含了Java Development Kit(JDK)的使用方法和特性。由于本书是为教学目的编写的,因此它的内容应该比较注重初学者对Java语言的理解和...
JRE 7 provides the libraries, the Java Virtual Machine (JVM), and other components to run applets and applications written in the Java programming language. The following conceptual diagram ...
### Lotus Domino Designer 6 Programming Guide, Volume 1: Overview and Formula Language #### 一、概述 《Lotus Domino Designer 6 Programming Guide, Volume 1》是针对Lotus Domino Designer 6软件的一本...
While it is most commonly used with the C programming language, Jogl gives Java programmers access to all the features of OpenGL. The version of Jogl that was used in this course was 1.1.1a. A new ...
An example-filled guide to the Java programming language and core APIs. Java Technology Home Page Training for the Java programming language Directory of various training resources. Demonstration ...
15.4 The First Functional Programming Language: LISP 624 15.5 An Introduction to Scheme 628 15.6 COMMON LISP 645 15.7 ML 645 15.8 Haskell 649 15.9 Applications of Functional Languages 653 ...
The chapter introduces programming as a set of instructions, or statements, written in a specific programming language that a computer follows to convert raw data into meaningful information....
31.1 PERSISTENCE FROM THE LANGUAGE 1037 31.2 BEYOND PERSISTENCE CLOSURE 1039 31.3 SCHEMA EVOLUTION 1041 31.4 FROM PERSISTENCE TO DATABASES 1047 31.5 OBJECT-RELATIONAL INTEROPERABILITY 1048 31.6 OBJECT...
The Android platform gives developers a fair bit of control while still supporting a familiar programming language. However, the frameworks, GUI widgets, and development model is different than any ...
This edition also incorporates notes about prominent enhancements in the imminent Python 3.1 release, which is intended to subsume Python 3.0 (in this book, Python 3.0 generally refers to the language...
The Python Language **2.1 First Steps** Getting started with Python involves familiarizing yourself with basic syntax and semantics. Python emphasizes code readability and allows programmers to ...
Java Code Library is a powerful multi-language source code Library with the following benefits: 1. Built-in library with 50,000++ lines of code 2. Quick and powerful search engine 3. Powerful ...
Function pointer arrays were the good old days of structured programming in C. Life is better now that we have Java technology, XML, J2EE, and all that. The Struts Controller is a servlet that maps ...
PyView: An Image and Notes Slideshow Section 9.6. PyDraw: Painting and Moving Graphics Section 9.7. PyClock: An Analog/Digital Clock Widget Section 9.8. PyToe: A Tic-Tac-Toe Game Widget ...
Note that this guide is not a C++ tutorial: we assume that the reader is familiar with the language. Header Files In general, every .cc file should have an associated .h file. There are some common ...
Python参考手册,官方正式版参考手册,chm版。以下摘取部分内容:Navigation index modules | next | Python » 3.6.5 Documentation » Python Documentation contents What’s New in Python ...PEP 343: The ‘with...
程序设计语言(Programming Language)是人与计算机之间沟通的桥梁。它们允许我们用易于理解的方式描述算法,然后由编译器或解释器转换为机器可以执行的指令。程序设计语言分为编译型和解释型两种类型,编译型语言如...