2012-02-18 3 views
0

メソッド(メソッドaと呼ぶ)にハッシュマップを実装し、そのメソッドでメソッドAを呼び出すメソッドaからメソッドbへ問題は、メソッドbのhmapの値を取得しようとすると、その文を書くことができなくなったということです。私がHashMapの値にアクセスすることを許可しない別の方法

クラスアナライザには、メソッドaとメソッドbの2つのメソッドがあります。私の下のステートメントからメソッドbを求めている:方法Bで

analyzer v=new analyzer(); 
v.b(hMap1, 1); 

、私はhmap1の値を取得しようとするが、それは私が書くことはできません:

public HashMap b(HashMap x,int i) 
{ 
    System.out.println(x.get("6").dstip); 
} 

それは許可していません私は.dstipを書いていますが、この印刷方法を書いたときには、メソッドaの文 がコンソールに表示されます。私はハッシュマップを公開しました、なぜ私は希望の文を書くことができないのか分かりません。

+0

より完全なコード例を投稿できますか?例外を投げたりコンパイルしたりしないだけで印刷できますか? – hmjd

+0

私はx.get( "6")を書くとき。 dstipが表示されるのを待ち、リストに表示されません – Xara

答えて

6

HashMapが型なしのため、getメソッドを呼び出すと、タイプObjectのインスタンスが返されます。 Objectには公共の財産がありません。dstipと呼ばれます。したがって、あなたの編集は失敗します。もちろん、あなたのコードスニペットは、Javaが動的に型付けされていれば機能しますが、それは完全にトピックから外れています。

HashMapを適切なパラメータタイプで宣言して渡す必要があります。セイ:サイドノートで

Map<MyDStipBean> map = new HashMap<MyDStipBean>(); 
public Map<MyDStipBean> b(Map<MyDStipBean> x,int i) { 
    System.out.println(x.get("6").dstip); 
} 

を、Javaコードはnamingまたはproperty accessためのベストプラクティスに従っていません。

+0

ありがとう、今は動作します – Xara

+0

パラメータにjava.util.HashMapではなくjava.util.Mapを使用する必要があることを付け加えたいと思います。 –

+0

@AlessandroSantini - 本当です。良いキャッチ。 – Perception