-1

私の使用を私のものに置き換えようとしていConcurrentHashMapますCaseInsensitiveConcurrentHashMap。ただし、ハッシュマップをインスタンス化できません。私の実装を提供します。

ハッシュ マップ クラス - SO の質問に基づく: https://stackoverflow.com/a/8237007/850475

import java.util.concurrent.ConcurrentHashMap;

public class CaseInsensitiveConcurrentHashMap <T> extends ConcurrentHashMap<String, T>{

    @Override
    public T put(String key, T value) {
        return super.put(key.toLowerCase(), value);
    }

    public T get(String key) {
        return super.get(key.toLowerCase());
    }
}

以下のコードは、新しいハッシュ マップでは機能しません。

public class tester {
    private static ConcurrentMap<String, SomeClass> items = new CaseInsensitiveConcurrentHashMap<String, SomeClass>();  
    private static ConcurrentMap<String, CaseInsensitiveConcurrentHashMap<String, Collection<SomeClass2>>> tagMap = new CaseInsensitiveConcurrentHashMap<String, CaseInsensitiveConcurrentHashMap<String, Collection<SomeClass2>>>();
}

両方の行がtester失敗します。これは私のエラーメッセージです:

Incorrect number of arguments for type CaseInsensitiveConcurrentHashMap<T>; it cannot be parameterized with arguments <String, Collection<SomeClass>>

私が試すことができるものについて何か考えはありますか?

4

2 に答える 2

3
class CaseInsensitiveConcurrentHashMap <T>

ハッシュマップは、1 つの汎用パラメーターを取ります。

したがって、これを使用する場合は、ジェネリック パラメータを 1 つだけ渡す必要があります。

于 2013-08-19T15:35:12.683 に答える
3

CaseInsensitiveConcurrentHashMap には、値の一般化されたパラメーターが 1 つしかないため、次を使用してインスタンス化する必要があります。new CaseInsensitiveConcurrentHashMap<SomeClass>()

于 2013-08-19T15:36:25.500 に答える