0

次のコードはコンパイルされません

import com.google.common.collect.LinkedHashMultimap;

public class Test {
    public static void main(String[] args) {
        LinkedHashMultimap<String, String> p = new LinkedHashMultimap<String, String>();    
    }
}

エラーは次のとおりです。コンストラクターLinkedHashMultimap()が表示されません

私はグーグルJavaライブラリをインポートしました、それらはビルドパスにあります

        LinkedHashMultimap<String, String> p;

単独ではコンパイルエラーは発生しません...奇妙な

4

2 に答える 2

6

静的createメソッドを使用して、LinkedHashMultimap の新しいインスタンスを取得します。

    LinkedHashMultimap<String, String> p = LinkedHashMultimap.create();  
于 2012-11-15T20:04:15.020 に答える
2

LinkedHashMultimapにはパブリック コンストラクターがなく、インスタンスを取得する方法は factory method を使用することcreateです。この理由は、型推論がメソッドに対してのみ機能し、コンストラクターに対しては機能しないため、Java Generics の抜け穴です。これは、たとえば代わり​​に

LinkedHashMultimap<String, Map<String, List<String>>> = 
  new LinkedHashMultimap<String, Map<String, List<String>>>();

あなたは書ける

LinkedHashMultimap<String, Map<String, List<String>>> = 
  LinkedHashMultimap.create();

Java 7 では、「ダイヤモンド オペレーター」のおかげでプレッシャーが軽減されました。

于 2012-11-15T20:11:18.730 に答える