2017-04-01 4 views
0

、私のコードがあるしてください:別で次にのjava:慈悲を持っていると... Javaの初心者」を助け、重複したバケツにこのピッチングの前jGrasp未チェックまたは安全でない操作

//at top of class 
List<String> faceStrList    = new ArrayList<String>(cardsPerSuit); 

、ライン(法)違反その他の方法で使用しています、ここでも

public static List readInfo(String inputFile, List<String> dataArrayOfStr) 
{ 
    String word = 'dummy'; 
    dataArrayOfStr.add(word); 
    return dataArrayOfStr; 
} 

ください

faceStrList = readInfo(cardValueFileStr, faceStrList); 

と問題の子供を親切に見てください。

答えて

0

あなたはちょうどあなたがjava.util.Listにインタフェースはのjava.util.Collectionインターフェイスのサブタイプである文字列

public static List<String> readInfo(String inputFile, List<String> dataArrayOfStr) 
{ 
    String word = "dummy"; 
    dataArrayOfStr.add(word); 
    return dataArrayOfStr; 
} 

のリストを返すされているコンパイラに指示する必要があります。特定の順序でリストの要素にアクセスでき、インデックスでもアクセスできることを意味するオブジェクトの順序付きリストを表します

すでに定義済みfaceStrListは文字列のリストです。次に、任意のタイプのリストを変数に代入します。

コンパイラエラーは発生しませんが、文字列のリストをコンパイラに返すように指定することができれば、より良い結果が得られます。ここで

0

public static List readInfo(

あなたはすべての場所で "正しい" あなたのジェネリックを得ました。そのメソッドを宣言するときには使用できません。返されたリストの汎用タイプはであり、です。その代わりに生のタイプが返されます(詳細はhereを参照)。コンパイラが警告するものです。

だから、解決策は、あなたが他の場所で行った同じことを行う、と

public static List<String> readInfo( 

とレコード用にメソッドシグネチャを変更するだけです:

List<String> faceStrList = new ArrayList<String>(cardsPerSuit); 

は次のように単純化することができあなたが省略でき

List<String> faces = new ArrayList<>(cardsPerSuit); 
  • ダイアモンドのオペレータ<>を使用するジェネリックタイプ。その情報を繰り返す必要はありません
  • それ以外には、には意味がありません。を変数名に入れてください。ちょうど "それは複数である"ことを明確にしてください。要は、あとでコレクションの種類を変更したい場合があります。私を信じて、あなたはあなたのすべての変数の名前を変更するのに疲れてしまいます!
  • 返信すでにパラメータとして指定されているリストは、まったく適切ではありません。また、それは必須でもありません。あなたが既に入っているリストに影響を与えるように、リストに何かを追加することは必須です。そのリストを返すだけで、インターフェースをより複雑にして理解することができます。
関連する問題