以下是普遍使用的或标准的:
private List<String> names ;
Run Code Online (Sandbox Code Playgroud)
要么
private List<String> listOfNames ;
Run Code Online (Sandbox Code Playgroud)
要么
private List<String> namesList ;
Run Code Online (Sandbox Code Playgroud) List list = new ArrayList<String>() ;
list.add(1) ;
Integer hello = (Integer) list.get(0) ;
System.out.println(hello);
Run Code Online (Sandbox Code Playgroud)
上面的代码有一个类型为List的引用,引用了String类型的ArrayList实例.当执行该行时,是不是将1添加到ArrayList(String类型)?如果是,那么为什么允许这样做?list.add(1)
java.util.HashMap有一个put方法的实现,其中包含以下代码:
if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
V oldValue = e.value;
e.value = value;
e.recordAccess(this);
return oldValue;
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,为什么不首先进行引用检查(因为具有相同引用的两个对象将具有相同的哈希和equals())?
即是这样的:
if ((k = e.key) == key) {
V oldValue = e.value;
e.value = value;
e.recordAccess(this);
return oldValue;
} else if ( compare hash and equals) {
// do something again with the value
}
Run Code Online (Sandbox Code Playgroud)
这不会节省比较吗?
我们通常按以下方式在按钮上(在GWT或Swing或Android中)编写一个单击处理程序(方式1).
class A {
public void myMethod() {
int count = 0 ;
Button myButton = new Button("x");
myButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
count = 1 ;
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我们也可以为click处理程序编写一个不同的类,并按照以下方式实现它(方式2):
class A implements ButtonClickInterface {
int count ;
public void myMethod() {
count = 0 ;
Button myButton = new Button("x");
myButton.addClickHandler(new MyClickHander(this));
}
@Override
public void buttonClicked() {
count = 1 ;
}
}
interface ButtonClickInterface {
public …Run Code Online (Sandbox Code Playgroud)