Author Archive

Stackoverflow问答翻译征集令

最近我在翻译Stackoverflow上的一些经典问答,希望有兴趣的各位译者可以一起来进行翻译,我找了一些vote很高的问答,有兴趣的同学可以来认领。
1.Why is processing a sorted array faster than an unsorted array?
2.Avoiding “!= null” statements in Java?
3.Differences between HashMap and Hashtable?
4.Creating a memory leak with Java
5.Why is char[] preferred over String for passwords?
6.When to use LinkedList over ArrayList?
7.How to test a class that has private methods, fields or inner classes
8.How to avoid Java Code in JSP-Files?
9.“implements Runnable” vs. “extends Thread”
10.Java inner class and static nested class
11.Examples of GoF Design Patterns in Java’s core libraries
12.What is reflection, and why is it useful?
13.What issues should be considered when overriding equals and hashCode in Java?
14.Why does Java have transient variables?
15.How do servlets work? Instantiation, session variables and multithreading

Stackoverflow问答:Java是传值还是传引用?

原文地址 译者:叶文海(yewenhai@gmail.com)
译者注:这是一篇在Stackoverflow上面的一个经典问题,也是Java开发者容易混淆的一个问题,我节选了其中两个vote最高的回复进行翻译。
问题:我一直认为Java的参数是按引用传递,然而我看过一些文章里说Java的参数并不是按引用传递的,比如这篇,这让我很迷惑。Java中的参数到底是按引用传递还是按值传递?
Read more

Java Reflection(十二):动态类加载与重载

原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gmail.com)
内容索引
类加载器
类加载体系
类加载
动态类加载
动态类重载
自定义类重载
类加载/重载示例
Java允许你在运行期动态加载和重载类,但是这个功能并没有像人们希望的那么简单直接。这篇文章将阐述在Java中如何加载以及重载类。
你可能会质疑为什么Java动态类加载特性是Java反射机制的一部分而不是Java核心平台的一部分。不管怎样,这篇文章被放到了Java反射系列里面而且也没有更好的系列来包含它了。
Read more

Java Reflection教程

原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gmail.com)校对:方腾飞

Java反射机制可以让我们在编译期(Compile Time)之外的运行期(Runtime)检查类,接口,变量以及方法的信息。反射还可以让我们在运行期实例化对象,调用方法,通过调用get/set方法获取变量的值。

Java反射机制功能强大而且非常实用。举个例子,你可以用反射机制把Java对象映射到数据库表,就像Butterfly Persistence(译者注:原作者所编写的框架)所做的那样,或者把脚本中的一段语句在运行期映射到相应的对象调用方法上,就像 Butterfly Container(译者注:原作者所编写的框架)在解析它的配置脚本时所做的那样。

Read more

Java Reflection(十一):动态代理

原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gmail.com)
内容索引
创建代理
InvocationHandler接口

常见用例

利用Java反射机制你可以在运行期动态的创建接口的实现。java.lang.reflect.Proxy类就可以实现这一功能。这个类的名字(译者注:Proxy意思为代理)就是为什么把动态接口实现叫做动态代理。动态的代理的用途十分广泛,比如数据库连接和事物管理(transaction management)还有单元测试时用到的动态mock对象以及AOP中的方法拦截功能等等都使用到了动态代理。
Read more

Java Reflection(十):数组

原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gmail.com)
内容索引
java.lang.reflect.Array
创建一个数组
访问一个数组
获取数组的Class对象
获取数组的成员类型

利用反射机制来处理数组会有点棘手。尤其是当你想要获得一个数组的Class对象,比如int[]等等。本节会讨论通过反射机制创建数组和如何获取数组的Class对象。

注意:在阅读Eyal Lupu的博客文章“Two Side Notes About Arrays and Reflection”之后对本文的内容做了更新。目前这个版本参考了这篇博文里面的内容。
Read more

Java Reflection(九):泛型

原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gmail.com)

内容索引
运用泛型反射的经验法则
泛型方法返回类型
泛型方法参数类型
泛型变量类型

我常常在一些文章以及论坛中读到说Java泛型信息在编译期被擦除(erased)所以你无法在运行期获得有关泛型的信息。其实这种说法并不完全正确的,在一些情况下是可以在运行期获取到泛型的信息。这些情况其实覆盖了一些我们需要泛型信息的需求。在本节中我们会演示一下这些情况。

Read more

Java Reflection(八):注解

原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gmail.com)

内容索引
什么是注解
类注解
方法注解
参数注解
变量注解

利用Java反射机制可以在运行期获取Java类的注解信息。
Read more

JAVA面试700问(一)

原文地址 译者:叶文海(yewenhai@gmail.com)

1、Java环境中的字节码是什么?

  • 由Java 编译器生成的一种代码。
  • 由JVM生成的一种代码。
  • Java源文件(Java Source File)的别名。
  • 一种写在类的实例方法中的代码。

答案:由Java 编译器生成的一种代码。

Read more

Java Reflection(七):私有变量和私有方法

原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gamil.com)
内容索引
访问私有变量
访问私有方法

在通常的观点中从对象的外部访问私有变量以及方法是不允许的,但是Java反射机制可以做到这一点。使用这个功能并不困难,在进行单元测试时这个功能非常有效。本节会向你展示如何使用这个功能。

注意:这个功能只有在代码运行在单机Java应用(standalone Java application)中才会有效,就像你做单元测试或者一些常规的应用程序一样。如果你在Java Applet中使用这个功能,那么你就要想办法去应付SecurityManager对你限制了。但是一般情况下我们是不会这么做的,所以在本节里面我们不会探讨这个问题。

Read more

Java Reflection(六):Getters and Setters

原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gamil.com)
使用Java反射你可以在运行期检查一个方法的信息以及在运行期调用这个方法,使用这个功能同样可以获取指定类的getters和setters,你不能直接寻找getters和setters,你需要检查一个类所有的方法来判断哪个方法是getters和setters。

Read more

Java Reflection(五):方法

原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gamil.com)
内容索引
获取Method对象
方法参数以及返回类型
通过Method对象调用方法

使用Java反射你可以在运行期检查一个方法的信息以及在运行期调用这个方法,通过使用java.lang.reflect.Method类就可以实现上述功能。在本节会带你深入了解Method对象的信息。

Read more

Java Reflection(四):变量

原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gamil.com)

内容索引
获取Field对象
变量名称
变量类型
获取或设置(get/set)变量值

使用Java反射机制你可以运行期检查一个类的变量信息(成员变量)或者获取或者设置变量的值。通过使用java.lang.reflect.Field类就可以实现上述功能。在本节会带你深入了解Field对象的信息。

Read more

Java Reflection(三):构造器

原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gamil.com)
内容索引
获取Constructor对象
构造方法参数
利用Constructor对象实例化一个类

利用Java的反射机制你可以检查一个类的构造方法,并且可以在运行期创建一个对象。这些功能都是通过java.lang.reflect.Constructor这个类实现的。本节将深入的阐述Java Constructor对象。

Read more

Java Reflection(二):Classes

原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gamil.com)
使用Java反射机制可以在运行时期检查Java类的信息,检查Java类的信息往往是你在使用Java反射机制的时候所做的第一件事情,通过获取类的信息你可以获取以下相关的内容:
Class对象
类名
修饰符
包信息
父类
实现的接口
构造器
方法
变量
注解

除了上述这些内容,还有很多的信息你可以通过反射机制获得,如果你想要知道全部的信息你可以查看相应的文档JavaDoc for java.lang.Class里面有详尽的描述。

Read more

return top