0

別の問題が発生しました。

別のクラスからアクセスできるように、オブジェクトとそれに関連付けられたキーのマップ全体を送信しようとしています。配列リストを渡すために使用されるのと同じ方法を使用しようとしたため、使用している方法は機能しませんが、マップでは機能しません。

それを行う正しい方法は何でしょうか?

これは私が試したものです

public Map <Integer, Employee> getAllEmps()
{ 
     return (Map <Integer, Employee>) ;
}

これが私が宣言した方法です(実際のマップ自体)

private static  Map <Integer, Employee> employeeMap = new TreeMap<Integer,Employee>();    
4

4 に答える 4

2

タイプではなく、マップ インスタンスを返す必要があります。

public Class SomeClass{
     private static Map<Integer,Employee> employeeMap=...;

    //Other methods 


   public Map <Integer, Employee> getAllEmps()
  { 
      return employeeMap ;
  }
}

従業員のみ(キーなし)が必要な場合は、別のメソッドを追加できます

 public Collection<Employee> getEmployees(){

     return employeeMap.values();
  }
于 2011-10-25T10:57:23.110 に答える
2

変数自体を返すことができます:

public Map <Integer, Employee> getAllEmps()
{ 
     return employeeMap;
}

これにより、誰でもマップのコンテンツを変更できるようになります。

変更を防ぐために、unmodifiableMap を返すことができます。

public Map <Integer, Employee> getAllEmps()
{ 
     return Collections.unmodifiableMap(employeeMap);
}

または、コピーを返すこともできます。

public Map <Integer, Employee> getAllEmps()
{ 
     return new TreeMap<Integer,Employee>(employeeMap);
}
于 2011-10-25T11:01:57.287 に答える
1

変数自体を渡して、マップをメンバー変数として持ってみませんか?

private Map <Integer, Employee> employeeMap = new Map <Integer, Employee>();    
public Map <Integer, Employee> getAllEmps()
{ 
     return employeeMap;
}
于 2011-10-25T10:58:03.970 に答える
0

getAllMaps () 関数は実際にマップを返す必要があります。静的な employeeMap を返すということですか?

于 2011-10-25T10:58:01.707 に答える