0

申し訳ありませんが、私はJavaの経験があまりありません。IDEとしてEclipseを使用しています。Eclispeは、私が理解できないチェックされていないキャストについて不平を言っています。コードsnipetを参照してください。これを一般的に正しくする方法は?

public Liberty2Server(ArrayList<Map<String,String>> libertySourceFiles , String basePath) throws FileNotFoundException , IllegalArgumentException {
    // check input file path
    for( Object map : libertySourceFiles) {
        Map<String,String> mp = (Map<String,String>) map ;  // <==Eclipse complains here: Unchecked cast from Object to Map<String,String>

ヒントは大歓迎です

ロルフ

4

4 に答える 4

3

forループを変更して、コレクションで明示的な型を使用できます。

for(Map<String,String> map : libertySourceFiles) {
    Map<String,String> mp = map; //probably not needed any more
}
于 2013-02-05T10:19:36.290 に答える
2

これは、コンパイラが安全であることを確認できないキャストを実行していることを意味します。

安全であることを確認する必要があることを警告します。

より良い解決策は、次を使用してキャストの必要性を取り除くことです

for(Map<String, String> mp : libertySourceFiles) {
于 2013-02-05T10:20:59.647 に答える
0

Objectを にキャストしたいので、Eclipse は不平を言いますMap<String, String>。実行中の変数のタイプを に変更するmapMap<String, String>、すべてがうまくいきます。その場合、変数さえ必要ありませんmp

于 2013-02-05T10:21:34.433 に答える
0

ここでの問題は、ArrayList<Map<String,String>>要素 doをアップObjectキャストしてからジェネリック型にダウンキャストすることです。解決策は簡単です:

public Liberty2Server(ArrayList<Map<String,String>> libertySourceFiles , String basePath) throws FileNotFoundException , IllegalArgumentException {
    // check input file path
    for(  Map<String,String> mp : libertySourceFiles) {
      //  Map<String,String> mp = (Map<String,String>) map ; Not needed anymore
      ....
于 2013-02-05T10:22:10.403 に答える