Javaの言語仕様についてふと思ったこと。
class Foo {みたいなコードを
int n;
public boolean equals(Object o) {
if (o instanceof Foo) {
return n == ((Foo) o).n;
}
return false;
}
}
class Foo {って書けたら素敵だなー。
int n;
public boolean equals(Object o) {
if (Foo o) { // もし o が Foo のインスタンスなら
return n == o.n; // o を Foo として扱う
}
return false;
}
}
ダウンキャストしたら負けだと思うんだよ。
いやまあ結局中身はダウンキャストなんだけど
安全だと断言できる状況ならあたかもダウンキャストではないように見えるほうが嬉しい。
ジェネリックスだって結局そういうことでしょ?