Browsed by
标签: Java

如何在Java中避免equals方法的隐藏陷阱

如何在Java中避免equals方法的隐藏陷阱

译者注 :你可能会觉得Java很简单,Object的equals实现也会非常简单,但是事实并不是你想象的这样,耐心的读完本文,你会发现你对Java了解的是如此的少。如果这篇文章是一份Java程序员的入职笔试,那么不知道有多少人会掉落到这样的陷阱中。原文转自http://www.artima.com/lejava/articles/equality.html 三位作者都是不同领域的大拿,有兴趣的读者可以从上面这个连接直接去阅读原文。

摘要
本文描述重载equals方法的技术,这种技术即使是具现类的子类增加了字段也能保证equal语义的正确性。
在《Effective Java》的第8项中,Josh Bloch描述了当继承类作为面向对象语言中的等价关系的基础问题,要保证派生类的equal正确性语义所会面对的困难。Bloch这样写到:

除非你忘记了面向对象抽象的好处,否则在当你继承一个新类或在类中增加了一个值组件时你无法同时保证equal的语义依然正确

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (12 人打了分,平均分: 3.83 )
Loading...
Java如何取源文件中文件名和行号

Java如何取源文件中文件名和行号

如何取的Java源代码文件中文件名和行号:)

在C/C++的程序,编译器提供了两个宏来支持取得源文件中的行号和文件名,这两个宏是__FILE__,__LINE__

你可以如下的方法打印行号和文件名


#include <stdio.h>
int main()
{
 fprintf(stdout,"[%s:%d] Hello World!",__FILE__,__LINE__);
 return 0;
}

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (6 人打了分,平均分: 2.67 )
Loading...
OSGi和Java企业级运算的未来方向

OSGi和Java企业级运算的未来方向

摘要: OSGi也是译者最近才接触到的技术,但是在OSGi的发展中,它越来越收到了来自行业的关注。作为OSGi的动态部署,译者认为此项规范对于企业应用应该是非常有帮助的。特别在银行的信息化建设中将会起到很重要的作用,因为国内大多的银行业都在强调7*24小时系统,但是其业务发展又非常迅速,常常有新需求,新变更。如果每一次上线变更都将重启系统的话,对银行的服务质量和形象将会造成较大的影响。 此文只是讲述了OSGi在Java企业运算中的新动向,并没有具体的介绍OSGi的规范。关于OSGi规范的文档可以从jcp上下载

原文出处:这里

OSGi和Java企业级运算的未来方向

by Eric Newcomer

无论JCP是否完全的迷失了它的方向,它都不同程度受到来自外部活动的影响。Spring框架和Hibernate影响了EJB3,而且JPA也是一个好的例子。另外日渐感觉到的影响来自于对OSGi规范的采用和其实现,特别是实现了OSGi的开源的Eclipse Equinox,Apache Felix和Knoplerfish框架

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (6 人打了分,平均分: 1.67 )
Loading...
深入浅出单实例Singleton设计模式

深入浅出单实例Singleton设计模式

单实例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了。这个设计模式主要目的是想在整个系统中只能出现一个类的实例。这样做当然是有必然的,比如你的软件的全局配置信息,或者是一个Factory,或是一个主控类,等等。你希望这个类在整个系统中只能出现一个实例。当然,作为一个技术负责人的你,你当然有权利通过使用非技术的手段来达到你的目的。比如:你在团队内部明文规定,“XX类只能有一个全局实例,如果某人使用两次以上,那么该人将被处于2000元的罚款!”(呵呵),你当然有权这么做。但是如果你的设计的是东西是一个类库,或是一个需要提供给用户使用的API,恐怕你的这项规定将会失效。因为,你无权要求别人会那么做。所以,这就是为什么,我们希望通过使用技术的手段来达成这样一个目的的原因。

本文会带着你深入整个Singleton的世界,当然,我会放弃使用C++语言而改用Java语言,因为使用Java这个语言可能更容易让我说明一些事情。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (15 人打了分,平均分: 4.00 )
Loading...
基于JVM的语言正在开始流行

基于JVM的语言正在开始流行

总结:

这是 Reuven Lerner在去年写的一篇博文,文章主要介绍了一些新兴的基于JVM的脚本语言。结合本文可以对Bruce的博文《C++和JAVA传统中积极的一面》有一个很好的理解。译者认为:语言始终都是一门工具,软件设计最重要的东西是来自于设计者的创造性,但是随着Java语言的出现,他的半动态的特性,ClassLoader,反射,动态代理,都是提高开发者创造性的前提,正是因为这些特性,才会出现新的的编程模式和范式——反转控制和依赖注入,面向方面的编程(AOP)。试想如果Java不提供ClassLoader,反射,动态代理机制的API,如何能实现依赖查找和依赖注入和动态AOP? 你能用C++来反转控制,依赖查找吗,能对容器中的组件做进行生命周期管理吗?为了说明程序员创造性和语言的这个关系,我引用Dion Hinchcliffe博文中的一张图来说明:

 程序员创造性和性能的关系

原文:http://ostatic.com/blog/jvm-based-languages-grow-in-popularity
基于JVM的语言正在开始流行

当Sun Microsystems公司在1995年第一次揭开Java的面纱的时候,就是非常难被定义的。这是因为JAVA是由多个部分构成:首先,它当然是一个面向对象语言。同时JAVA也是一个定义标准的语言(或多个标准,包括移动设备,标准,和企业三个版本)。最后,Java是一个虚拟机(“JVM”),一个Java程序能够执行的软件环境。如果你有一个JVM,虽然这个JVM只能用来运行Java的程序——但是,JVM能在运行在你能想到的每一个平台之上,这使得Java成为一个具有高移植性的语言。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (7 人打了分,平均分: 2.14 )
Loading...
C++和JAVA传统中积极的一面

C++和JAVA传统中积极的一面

bruceeckel译者注

本文翻译自Bruce Eckel(《Thinking in C++》& 《Thinking in Java》作者)的博文,该博文于2009年03月14日发表于:

http://www.artima.com/weblogs/viewpost.jsp?thread=252441

本文的发表引起了互联网上热烈的讨论,关于讨论大家可以到这里围观。

下面是原文。原名《The Positive Legacy of C++ and Java

摘要:

在最近的讨论中,有些人断定C++并不是一个设计完美的语言。在我在C++标准委员那8年里,我目睹所有关于C++的决议的诞生。我希望本文有助于帮读者理解C++和JAVA的设计选择,从而可以让大家更全面的来看待他们。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (15 人打了分,平均分: 3.53 )
Loading...
OMG, Jave的JMenu居然有433个方法

OMG, Jave的JMenu居然有433个方法

Java的Swing类库中有一个类叫JMenu,这个类上面有7层的继承,加上所有被继承下来的方法,这个类一共有433个方法,虽然,很多类是从上面继承下来的,而它自己的方法并没有定义太多的方法,不过,继承体系过深,在底层类上要想知道所有的继承下来的东西并不是一样容易的事情。这个例子展示了一个滥用代码重用的反面案例。我个人认为我们应该反思一下滥用面向对象的作法。

要把Java一个类所有的方法例出来并不是一件难事,使用Javascript 利用Firefox浏览器所支持的Package来穷举JMenu的方法可以很方便的列出所有的方法。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (10 人打了分,平均分: 3.20 )
Loading...
Java书籍Top 10

Java书籍Top 10

下面是Java Inside上推荐的十本不错的Java书籍。(文章来源

Java编程规范(第三版)

1)Java Language Specification, Third Edition (by James Gosling)

本书由Java技术的发明者编写,是Java TM编程语言的权威性技术指南。如果你想知道语言之构造的精确含义,本书是最好的资源。

中文版链接:《Java编程规范
英文版链接:《The Java Language Specification (3rd Edition)

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (7 人打了分,平均分: 3.14 )
Loading...
Java EE6 初探

Java EE6 初探

tss上,Reza Rahman发表了一篇关于JAVA EE6《Java EE6 Overview》的文章,在文章里面他谈及一些关于JavaEE6草案的一些修改内容。

想JAVA企业级应用一路走来,从J2ee到Java EE5 在到即将要推出的Java EE6经历了一个由复杂到简单,由繁到简的过程。

Reza Rahman 文章说,Java EE6将会更简单,更轻量级,更易部署,Java EE6将会裁剪到Java EE5中不实用的部分。并且Java EE6将会为不同的用户群提供不同的规范子集。

回顾上一版本Java EE 5中,主要引入了以下改变:
1)引入了EJB3.0
2)引入了JSF作Tier framework.
3)使用JAX-WS2.0取代了JAX-RPC作新一代的SOAP的Web service API
4)使用POJO编程,零配置系统和自由的XML减轻了系统的复杂性。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (8 人打了分,平均分: 2.75 )
Loading...