2
public class EnumFromInt<TEnum extends Enum<TEnum>> {
private static TEnum[] _values;
private static TEnum[] GetValues() {
if (_values != null)
{
return _values;
}
_values = TEnum.values();
return _values;
}
}
以上、「は静的コンテキストから参照できません」の2つのインスタンスがあります。彼らは別々のように見えるので、私はそれらを別の問題として扱います。私は両方を理解したいと思います。汎用クラス内でEnumの静的関数を使用するにはどうすればよいですか?
TEnum[]
- なぜですか? TEnum型の配列です。TEnum.values()
- TEnumは型Enumであると宣言されているので、すべての列挙型に属する静的関数を使用できないようにする必要がありますか?
クラスレベルのジェネリックはJavaのインスタンスにのみ適用されるため、静的コンテキストで参照することはできません。また、ジェネリック型で静的メソッドを呼び出すことはできません。後者の背後にある理由は分かりませんが、関連する質問があります:https://stackoverflow.com/q/6512179/1553851 – shmosel
あなたの2つの箇条書きは、TEnumの性質について互いに矛盾しています。最初の方が「TEnumのタイプはどんなものでも」より正確です。 2番目は 'TEnum'が*型Enumと宣言されたオブジェクトであると仮定していますが、そうではありません。 –
@JohnBollingerしかし、それは次のとおりです: 'TEnum extends Enum' –
shmosel