私はこのコードを持っているとしましょう
Map<String, String> list = new HashMap<String, String>();
list.put("number1", "one");
list.put("number2", "two");
どうすれば「エイリアス」をタイプにすることができますか
Map<String, String>
書き直しやすいものに
// may be something like this
theNewType = HashMap<String, String>;
theNewType list = new theNewType();
list.put("number1", "one");
list.put("number2", "two");
基本的に私の質問は、「エイリアス」を何らかの「タイプ」に作成する方法です。そのため、プログラムコード全体を変更する必要がある場合、簡単に記述できます。
ありがとう、これがばかげた質問ならごめんなさい。私はちょっとJavaに慣れていない。
Javaにはエイリアスはありません。次のように、クラスでHashMap
クラスを拡張できます。
public class TheNewType extends HashMap<String, String> {
// default constructor
public TheNewType() {
super();
}
// you need to implement the other constructors if you need
}
ただし、これはHashMap<String, String>
と入力したクラスとは異なるクラスになることに注意してください
Javaにはtypedef
に相当するものはなく、エイリアシング型の一般的なイディオムもありません。次のようなことができると思います
class StringMap extends HashMap<String, String> {}
しかし、これは一般的ではなく、プログラム管理者には明らかではありません。
Javaはこれをサポートしていませんが、ジェネリックトリックを使用してシミュレートできます。
class Test<I extends Integer> {
<L extends Long> void x(I i, L l) {
System.out.println(
i.intValue() + ", " +
l.longValue()
);
}
}
ソース: http://blog.jooq.org/2014/11/03/10-things-you-didnt-know-about-Java/
最も近いものは、そのようなラッパークラスを作成することです
class NewType extends HashMap<String, String> {
public NewType() { }
}
Javaにサウンドタイプのエイリアス機能があればいいのに。
Javaにはそのようなものはありません。 IDEテンプレートまたはオートコンプリートで何かを行うことができ、(制限付き) ジェネリック型推論 in Java 7。