0

私はこのクラスを持っています...

public abstract class LoadboardTable
{
    protected Map<String, HashMap<HasTableFields, String>>  table   = new TreeMap<String, HashMap<HasTableFields, String>>();

    public Set<Entry<String, HashMap<HasTableFields, String>>> getEntries()
    {
        return table.entrySet();
    }

    ...
}

他のクラスでは、私は常にジェネリック型を繰り返しています。例えば...

for (Entry<String, HashMap<HasTableFields, String>> entry : myTable.getEntries()){}

Set<Entry<String, HashMap<HasTableFields, String>>> entries = otherTable.getEntries();

etc, etc...

このジェネリック型は、アプリケーション全体で繰り返され、散らかっています。もっと良い方法はありますか?LoadboardTableクラスのテーブルMapオブジェクトの汎用タイプを変更することにした場合は、他の場所でも何日も変更することになります。さらに、入力し続けるのは非常に面倒です。

4

3 に答える 3

3

Java 7 以降、コンストラクターを除いて、繰り返しを回避する方法はありません。

protected Map<String, HashMap<HasTableFields, String>> table = new TreeMap<>();

ただし、HashMap とエントリを適切に定義されたクラスにカプセル化すると、コードが改善され、入力が少なくなります。オブジェクトを閉じたオブジェクトとして使用するのではなく、オブジェクトをオープンなデータ構造として使用しているようです。動作を提供し、その状態をカプセル化したままにします。

于 2013-01-24T14:46:11.310 に答える
1

3 Advises:

  1. Instead of using so much generics, think about classes that you actually want to implement, instead of solving everything with generics.
  2. Use the diamond operator with Java 7.
  3. When using eclipse you can write just "getEntries" and then press CTRL+1 and click "assign to local variable" - this will automatically create a local variable with the right type. This does not solve the problem, but will make it a bit faster to write.
于 2013-01-24T14:48:06.040 に答える
0

public abstract class LoadboardTable<T,O>
{
    protected Map<T, HashMap<O, T>>  table   = new TreeMap<T, HashMap<O, T>>();

    public Set<Entry<T, HashMap<O, T>>> getEntries()
    {
        return table.entrySet();
    }
}

于 2013-01-24T14:56:04.753 に答える