??xml version="1.0" encoding="utf-8" standalone="yes"?> Most of the puzzles in this chapter were based on name reuse. This section summarizes the various forms of name reuse. An instance method overrides all accessible instance methods with the same signature in superclasses [JLS 8.4.8.1], enabling dynamic dispatch; in other words, the VM chooses which overriding to invoke based on an instance's run-time type [JLS 15.12.4.4]. Overriding is fundamental to object-oriented programming and is the only form of name reuse that is not generally discouraged: A field, static method, or member type hides all accessible fields, static methods, or member types, respectively, with the same name (or, for methods, signature) in supertypes. Hiding a member prevents it from being inherited [JLS 8.3, 8.4.8.2, 8.5]: Methods in a class overload one another if they have the same name and different signatures. The overloaded method designated by an invocation is selected at compile time [JLS 8.4.9, 15.12.2]: A variable, method, or type shadows all variables, methods, or types, respectively, with the same name in a textually enclosing scope. If an entity is shadowed, you cannot refer to it by its simple name; depending on the entity, you cannot refer to it at all [JLS 6.3.1]: Although shadowing is generally discouraged, one common idiom does involve shadowing. Constructors often reuse a field name from their class as a parameter name to pass the value of the named field. This idiom is not without risk, but most Java programmers have decided that the stylistic benefits outweigh the risks: A variable obscures a type with the same name if both are in scope: If the name is used where variables and types are permitted, it refers to the variable. Similarly, a variable or a type can obscure a package. Obscuring is the only kind of name reuse where the two names are in different namespaces: variables, packages, methods, or types. If a type or a package is obscured, you cannot refer to it by its simple name except in a context where the syntax allows only a name from its namespace. Adhering to the naming conventions largely eliminates obscuring [JLS 6.3.2, 6.5]:
A Glossary of Name Reuse
Overriding
class Base {
public void f() { }
}
class Derived extends Base {
public void f() { } // overrrides Base.f()
}
Hiding
class Base {
public static void f() { }
}
class Derived extends Base {
public static void f() { } // hides Base.f()
}
Overloading
class CircuitBreaker {
public void f(int i) { } // int overloading
public void f(String s) { } // String overloading
}
Shadowing
class WhoKnows {
static String sentence = "I don't know.";
public static void main(String[] args) {
String sentence = "I know!"; // shadows static field
System.out.println(sentence); // prints local variable
}
}
class Belt {
private final int size;
public Belt(int size) { // Parameter shadows Belt.size
this.size = size;
}
}
Obscuring
public class Obscure {
static String System; // Obscures type java.lang.System
public static void main(String[] args) {
// Next line won't compile: System refers to static field
System.out.println("hello, obscure world!");
}
}
目前Q就因私护照(比如你出国旅游,留学Q探亲等{?Q全世界只有20个左右的国家对中国护照免{,和巴基斯坦和孟加拉护照的待遇差不多。护照是一个国家公民在国外的n份证Ӟ免签或者落地签从一定程度上体现了国家的CQ国民素质和在别国群众眼里你的Ş象。现在虽然满报纸Q电视的"中国崛v"论,但在普通民众国际事务上q是地道的三待遇,q和中国现在的国际地位实在是有点不符Q尴至?..值得注意的是Q香港护照自从回归后却一直没受媄响,现在全球120+国家寚w港护照免{或落地{。一?行政?的护照居然比其所在国家的护照好Q这也算是够让国内汗颜的?..
全球最好用的几个国?地区)护照Q国名后头是对该国护照免{或落地{֛家数?..
1 Finland 130
1 Denmark 130
1 United States 130
2 Ireland 129
2 Sweden 129
2 Germany 129
3 United Kingdom 128
3 Italy 128
3 France 128
3 Japan 128
4 Spain 127
4 Norway 127
4 Switzerland 127
4 Belgium 127
5 Netherlands 126
HK?24?...
对中国大陆护照免{国家:
安道?(国家太小Q要从法国或西班牙入?
阉K?(对全世界免签...除了孟加拉和阿富汗的公民或者难?
贝宁 库克岛 (和中国无直航) 多米加 (和中国无直航)
澳门 马尔代夫 毛里求斯 c_|尼西亚
泊?萨摩?塞舌?所|门岛 斯里兰卡
叙利?特科斯和开U斯 囄?瓦纽?br>埃及 (从西奈半岛入境才?
俄罗?(团队)
׃评论上头q些国家了,有些q得先拿攑֤镜去地图上找扑֜哪里。还几个落地{֛Ӟ也基本集中在太^z和非洲...有些国家甚至你落地签交的p多给的居留时间越?..ft~~~...赚外汇也不需要这样啊...
Some of the highlights:
* New default color scheme and syntax coloring
* Ruby Debugger enhancements (global vars, watch view, locals view)
* Redesigned Find / Replace dialog
* Plugin Manager allows you to distribute groups of IDE components (for example Ruby, SOA)
* Integrated Visual Design for Web Applications
* New, Integrated UI for CLDC/MIDP and CDC development
* Limited refactoring of GUI forms
* New keyboard shortcuts (they're supposed to be more logical now)
* New refactorings - 16 refactorings now available out of the box
* New directory chooser - easier to use for new NetBeans users
Of course there's much more available:
http://wiki.netbeans.org/wiki/view/NewAndNoteWorthyMilestone10
M10 was the last milestone, we will now be slowly approaching the betas (two betas are planned), rcs and ultimately the final release of NetBeans 6.0. If you want to see what all will be available in 6.0, here's full list of the features in previous milestones.
I'm so sorry to hear about your decision, but thank you very much for letting us know!
With best wishes,
Kirsi
瑞典的收到后Q还跟我聊了hQ我q得x怎么"对付"q小?_-#(一个senior lecturerQ看照片挺年ȝ)Q?br>
Citerar Sike Huang <xx@xx.com>:
> Hi, Ivan,
>
> I've chosen the Software Engineering of Distributed Systems program in
> Royal Institute of Technology, I prefer software engineering (project
> management and design) than computer science (theoretical/mathematical studies).
:) ... thanks! Word of advice: the title of an education really does not mean so much (ie you can tailor a profile with us which will have more SE than the one you have chosen at KTH). In any case - good luck with your studies!!
>
> By the way, is there any academic cooperation between UU and KTH?
Yes, there is. In fact you can take any relevant course at Uppsala and count it towards your degree at KTH (and vice versa). Also you can chose to do your MSc thesis at UU (or at any other swedish school for that matter).
Note: You are awarded your degree from the school where you take you LAST course...
all the best,
ivan
PS You should come visit us once you get to Sweden (just to see what you are missing ... just kidding ;)
>
> Best wishes,
> Sike Huang
>
> -----Original Message-----
> From: Ivan Christoff [mailto:xx@xx.uu.se]
> Sent: 2007å¹´5月26æ?#165; 23:35
> To: Sike Huang
> Subject: RE: MSc in CS at Uppsala
>
> Citerar Sike Huang <xx@xx.com>:
>
> > Hi, Ivan,
> >
> > I've sent an email on May 4th to Elin Carlsson
> > [mailto:xx@xx.uu.se], explaining that I'm not going to
> Uppsala.
> >
> > Anyway, thanks for your offer and sincere help again.
>
> Ok, thanks for letting me know.
>
> Good luck with your studies!
>
> ivan
>
> PS Which school did you chose? (just curious :)
>
> >
> > Best wishes,
> >
> > Sike Huang
> >
> >
> ----------------------------------------------------------------------
> ------
> > Hi, Elin Carlsson,
> >
> > It¡¯s a great honor that I¡¯ve been accepted to Uppsala University.
> However
> > due to some personal preferences, I decide to go to another
> > university instead.
> >
> > Thanks for your offer and sincere help, and wish to have a chance to
> > visit Uppsala someday.
> >
> > Best Regards,
> >
> > Sike Huang
> >
> ----------------------------------------------------------------------
> ------
> >
> >
> >
> > -----Original Message-----
> > From: Ivan Christoff [mailto:xx@xx.uu.se]
> > Sent: 2007Äê5ÔÂ25ÈÕ 12:52
> > To: xx@xx.com
> > Subject: MSc in CS at Uppsala
> >
> >
> >
> > Dear Mr. Huang,
> >
> > Are you still interested in joining the MSc Program in Computer
> > Science at Uppsala University?
> >
> > Our records show that you have not answered an address confirmation
> > mail which was sent a while ago.
> >
> > If you are still interested, please send me your correct mailing
> > address so that the admission letter can be sent.
> >
> > Best regards,
> >
> > Ivan Christoff
> >
> >
>
>
>
>
Borland JBuilder、IBM Rational以及Sun NetBeansq三ƾ著名的Java开发工hl分别获得美国《InfoWorld?005?006?007q度的Java IDE产品cd“q度技?#8221;奖,是目前市面上应用最多、性能最强大的开发工具之一。在q去的几q里Q这些工具都成熟了很多,特别是在静态代码分析、单元测试和版本理{方面取得了巨大q步。本文对q三Ƒּ发工兯行了详细评测Q以期ؓ开发h员提供一些选型的依据?
IBM RAD 7Q?不支持Java EE 5、Java SE 6
IBM Rational Application Developer for WebSphere Software 7.0Q简URAD 7Q基于Eclipse——Borland/CodeGear的JBuilder产品pd也基于这个开源Y件框架。Eclipse原先是一UJava IDEQ不q近几年它重新定位,作ؓ可以往上面d多种插g的框Ӟ因而可以构建各U各L工具Q许多工具与Java开发没有关p)。Eclipse新的框架定位引v了一些h的担忧,生怕原先的Java IDE概念已被淡化。这U担心也怸无道理,不过好就好在Eclipse目前拥有最大的Java插gC?
RAD 7为改动后的Eclipse库添加了几个lgQ其中不组仉向企业应用开发,它们包括门户lg和门户开发工Pq有q泛的数据库支持。数据库支持Q尤其支持IBM的DB2Q包括了~写用户自定义函敎ͼUDFQ、存储过E和SQLJ代码的功能,而这些都是本ơ测评的三款产品中特有的功能?
不过QRAD 7的图解和建模功能比较有限Q它只支持两UUML图(NetBeans和JBuilder分别支持八种和九U)。要从IBM获得更全面的图表支持功能Q就得购Ch格更昂贵的IBM Rational Software Architect?
有了RAD 7Q就可以开发Web服务和Web服务客户E序Q生成Web服务描述语言QWSDLQ,甚至对专有的通用描述发现集成QUDDIQ服务进行单元测试。另外,它还支持IBM的DADXQ这是Web服务使用的DB2 XML扩展。遗憄是,该品以IBMZ心的Ҏ还影响CUDDI试Q它只支持用基于IBM技术的专有注册库?
在编码方面,RAD 7提供了静态分析工P集成了IBM开发的200多项规则Q适用于处理可能存在的Java~陷和编码错误。尽本ơ测评的其他IDE提供了更多规则,但IBM的解x案可以把q些产品无法发现的错误标记出来,q详l说明用规则的原因以及解决问题的示例代码。这U全面的帮助体现了IBM一贯以来的传统Q说明文翔实、完备。RAD可链接到q泛的教E。以丰富的文章数量而在开发社Z享有盛名的IBM|站也提供了另外一些资源?
如果应用E序需要脚本语a来把各部?#8220;_合”hQRAD 7q提供了内部支持ZJava的PythonQJythonQ的功能。遗憄是,该IDE无法自动区别什么是Jython、什么是JavaQ尽这两门语言的语法全然不同。这会导致有些操作得IDE无法正常工作?
管q个~点很小Q但表明了我在用RAD 7时经帔R到的问题Q许多特性没有实施好。譬如说QY件安装v来非常困难。得到IBM有关人员的支持后Q笔者才正确安装上了该品,不过原先的一些问题的原因Ҏ没有找出来?
问题q不止这些。检查注释和文字拼写的选项Q一Ҏ用功能)没法使用Q因为IBM没有发布词典。要是这特性被启用Q它会把所有单词标Cؓ拼写有误。代码检查工h定的U正操作偶尔会无效。对话框里面的动态帮助经常把用户带到错误的地方,所以只好重新回到特定的上下文?
一D|间后Q这些问题堆Uv来得这个原本不错的产品用v来让人沮丧。另外,q有一个地方要抱怨:IBM在支持现有的Java标准斚w落后于其他厂商。它是这ơ测评中惟一不支持Java EE 5和Java SE 6的一UIDE?
因此Q本文推荐已l在大量使用IBM产品的站点用RAD 7Q因产品特别支持q些产品Q尤其是DB2和WebSphere。另外,要是站点希望许多国家的开发h员用同一UIDEQ应当会喜欢RAD 7Q因为它的外文版本比其他M一UIDE都要多得多。不q,h比较高,加上其他斚w的一些不_能会促站点在斥资购C前会考察所有方案?
JBuilder 2007Q相当出色的IDE
Borland/CodeGear JBuilder 2007 Enterprise Edition在这ơ测评中荣登榜首。这个版本是自该产品UL到Eclipseq_以来的第一个版本。它׃门开发IDE工具的Borland旗下的CodeGear发布。由于Borland的品用h历来有难度,加上q是新^C的第一个版本,所以我以ؓq个优秀产品会有些不如人意的地斏V结果出乎所料,q个非常畅而稳定的IDE有许多创新的Ҏ。可以这么说QCodeGear肯定个版本耗尽了心血Q事实上实也取得了辉煌成功?
至于Java~码QJBuilder有三个不同系列的代码审查器和分析器:开源PMD、Findbugs和Borland自己的代码检查工兗这些工具可以很好地协同工作Q实际上Q它们带来的众多标记可能让开发h员招架不住)Q不q它们对出现的问题没有解释应采取什么措施,也没有IBM的RAD 7产品那样全面的问题解军_议办法?
JBuilder捆绑了一个度量包Qmetrics packageQ,它比MIDE的度量包都来得全面。它可以生成80多种不同的度量,q且以图解或者电子表格的方式昄。用户可以关闭没有兴的度量Qؓ实惌跟踪的那些度量设定阈倹{JBuilderq能保存度量快照Q那样就可以代码库的当前状态和前几ơ执行的状态进行比较,保数字往正确的方向发展?
CodeGear集成了JBuilder的OptimizeIt工具套gQ多q来Borland把它作ؓ独立产品来提供。OptimizeIt提供了众多的高清晰视图,可以了解软g的性能和内存用情c它包括代码覆盖分析Q但只能分析c覆盖百分比Q而不是逐行分析Q及其他可见性,从而可以了解底层发生的情况Q包括每个线E的数据?
JBuilderq提供出众的协作Ҏ。它拥有面向开发h员的消息传送系l,q有助于代码查以及开发h员的通信。它使用对等设计模式Q遗憄是,只能与同一个网D上的伙伴协同工作。JBuilder为团队协作方面提供了TeamInsightQ这个易于配|的门户服务器包括以下几个重要的开源工PSubversion、Bugzilla、Continuum和XPlanner。该门户可以通过Web接口或者通过JBuilder讉KQ包含众多的目报告和度量。其他两UIDE都没法与q种团队合作的紧密性相提ƈ论?
JBuilder整体上让得可靠、稳定:考虑到它只是Eclipseq_上的W一个版本,取得q样的成l实属不易。遇到的惟一错误是l常出现不管用的帮助图标。需要抱怨的地方集中在没有实施的Ҏ上Q譬如缺面向JSP或者JSF的可视化设计器(不过q些设计器很快就会出玎ͼ。该产品q无法ؓ使用DB2的应用程序生成部|文件。最后,它目前只有Windows版本。Linux和Mac版本定于5月推出?
截至评时的版本h?999元Q所以JBuilderq不便宜Q但完全物有所倹{对不需要所有高端特性的开发h员来_q可以用专业版和开发h员版的JBuilderQh格分别ؓ799元?99元?
NetBeans 5.5Q可免费下蝲
Sun的NetBeans产品是这ơ测评品中惟一完全开放源码的产品Q可从netbeans.org免费获得。不像其他Y件包QNetBeans需要一些组合。可以从核心NetBeansq_着手,d几个“?#8221;QpackQ,具体取决于开发者的需求?
目前QSun提供企业包和Visual Web包(两个都用于这ơ测评)、用于J2ME~程的移动包以及C/C++包。性能分析包(也用于这ơ测评)是一个独立的包。这些包包含常用的IDE插gQ通常提供了大量新功能。一旦下载了q些包,安装hp而易举?
几年前,NetBeans更像是有一些优UҎ,但在后面跟随的IDEQ难以与其他Java IDE产品真正q_U色。但现在不再是这PNetBeansZ业计环境提供了几项实用Ҏ,包括通过Sun的GlassFish目q一形式支持Java EE 5。该IDE拥有面向Z服务的企业开发的优秀工具Q无论是面向服务的架构(SOAQ,q是普通的Web服务。譬如说QNetBeans是本ơ测评中惟一拥有业务程执行语言QBPELQ所需的全部图解和建模功能的品?
不过Q该企业服务产品的不x~少支持常用产品的功能。NetBeans不支持IBM的WebSphere应用服务器,q且~少支持JavaDB之外的其他Q何数据库的集成功能。不q,后一炚w要澄清一下:NetBeans能够识别可通过Java数据库连接性(JDBCQ访问的M数据库,但它只能为JavaDB生成配置文g、充分利用数据库理pȝQDBMSQ特定的Ҏ?
NetBeans的协作特性非常好Q拥有内|工P可用于开发h员之间的实时协作Q包括聊天和代码׃n功能。不像JBuilder中的q些Ҏ,NetBeans的设计基于服务器。可以构q服务器用于这U通信Q也可以免费使用Sun提供的服务器。只要登录到Sun的服务器Q所在小l的M开发h员都会连同他们的d状态信息显C出来,q种设计cMIM产品中的在线感知Qpresence awarenessQ。;
至于GUI设计QNetBeans捆绑了MatisseQ这是同cM最的GUI布局工具。把H口lg拖放到窗格和对话框上Ӟ它们会正地自动排列。最佛_可选位|排列方面的准则会在拖放操作q程中弹出来。Matisse然后利用q种设计来生成代码?
如果站点大量开发基于Swing的接口,单单q个工具pNetBeans成ؓ它们的首选IDEQ因为Matisse只与Swing协同工作。幸好,׃Swing的性能和外观感觉得CE_发展Q这个局限不像以前那h得严重?
虽然本次评的其他Java IDE都用自q专有格式来存N目元数据Q但NetBeans巧妙C赖Ant文g来存N目的配置数据Q其实,它用相当于make的开源Java工具Ant帮助构徏代码Q。这h一大优势:在用多UJava IDE的开发小l中Q其他Q何IDE都可以装入及q行NetBeans目Q不必手工{换或者分批导入?
但用Ant文g也有一个缺点:NetBeans只支持单一q行旉|。其他IDE大多数可以想~写多少q行旉|,p~写多少QNetBeans却不是这栗要是每ơ想改变传递给应用E序的参敎ͼ得手动改变一个配|(卛_推出?.0版本IDE解决了这个问题)?
昄QNetBeans拥有不同d的特性组合——有些特性实施得很好Q但另一些完全没有。它不但免费Q而且比基于Eclipse的品响应更q即、操作更ҎQ因为它丢弃了Eclipse采用?#8220;视图”设计Q而是单单使用H口。另外,NetBeansl常得到改进Q拥有非常活跃的开发社区,得益于仅ơ于Eclipse的庞大插件库?
事实上,NetBeans的新版本可以解决上述许多抱怨。如果你在考虑NetBeansQ不妨在做出军_之前Q看一下目前可以获得的版本6试版?
链接:其他的Java IDE工具
挑选IDE的关键是选择既确保工作效率、又便于使用的一UIDE。下面简要介l一下本文所讨论的品之外的三个选择?
EclipseQ如果不需要RAD 7或者JBuilder的高U特性,不妨考虑普通版本的EclipseQ可以从eclipse.org免费下蝲。如果需要几wU特性,不妨考虑Genuitec的MyEclipseQ它把许多开源工P包括NetBeans的MatisseQ集成到Eclipse里面Q费用是每个用户每年54元?
JetBrains IntelliJ: 许多开发h员认ƾJava IDE是最有效率、最让h喜欢的纯~码环境。IntelliJ的界面比IBM、Borland或者Sun IDE来得直观Q因而博得了誉。它q有一些独特的Ҏ,譬如_代码规则在后台运行,所以在~码q程中出现的错误或者错误样式会实时昄Q问题被U正后,׃从屏q上立马消失。这些规则比本次评的三ƾ品都要来得多Q对~写大量Java代码、又不需要徏模工L站点而言QIntelliJ是非常可靠、非怽廉的选择?
Oracle JDeveloper: JDeveloper是一U特性丰富、免费(但不是开源)的Java IDEQ可从Oracle|站获得。与NetBeans一P它也不是ZEclipse。它支持一些企业特性,包括SOA和Web服务Q当然也支持与Oracle数据库技术和OC4J Java应用服务器之间的Ҏ集成?
E序q行l果Q?br />2
B
B
B
1
B
A
A
E序分析Q在该示例程序中Q变量i产生数据成员变量隐藏Q实例方法f()是方法重写,对实例方法的重写会生运行时多态性。staticҎg()也是Ҏ重写Q但q种Ҏ重写不具有运行时多态的特征Q多态特征是针对实例Ҏ而言。因此当子类对象作ؓ父类对象使用Ӟ在输出结果中看到Q只有f()发生了运行时多态?/p>