私はC#コードに翻訳することを試みていますが、私はC#を初めて使っています(最近までジェネリックで働いたことはありません)。C#と同等のJavaクラス<E>とEはEnumを拡張します<E>
Javaのジェネリックに関しては、私はその操作方法を(多かれ少なかれ)理解しようとしています。このWhy not extending from Enum<E extends Enum<E>>とこのHow to use Class<T> in Java?を確認しましたが、このJavaコードで何が起こっているのかを実際に理解することができず、その結果、同等のC#コードについて考えることができません。
C#でpublic abstract class TraciObject<E extends Enum<E>> {
private final String id;
private final EnumMap<E, ReadObjectVarQuery<?>> readQueries;
protected TraciObject(String id, Class<E> enumClass) {
this.id = id;
readQueries = new EnumMap<E, ReadObjectVarQuery<?>>(enumClass);
}
...
}
私のアプローチは、これまでに以下の通りです:私はreadQueries = new Dictionary<E, ReadObjectVarQuery<E>>(enumClass);
を持っている場合
public abstract class TraciObject<E> where E : Enum<E> { //Non-generic type Enum cannot be used with type arguments
private readonly string id;
private readonly Dictionary<E, ReadObjectVarQuery<E>> readQueries;
protected TraciObject(String id, E enumClass)
{
this.id = id;
readQueries = new Dictionary<E, ReadObjectVarQuery<E>>(enumClass); //cannot convert from E to 'System.Collections.Generic.IEqualityComparer'
}
私は確認していないJavaのEnumMap(Class<K> keyType)
に対応する取得しようとしますが、辞書https://msdn.microsoft.com/es-es/library/xfhwa508(v=vs.110).aspxについてのドキュメントをチェックしていましたこれはJava Docから
「Enum」と「enumClass」とは何ですか? –
'TraciObject:IEnumerable 'はおそらくあなたが探しているものです –