0

これは私の実際のコードです:

public TerminalGui[] getTerminalGuis() {
    Components comps[] = this.getComponents();
    int i, j = 0;

    for( i = 0; i < comps.length ; i++ ) {
        if( comps[i] instanceof TerminalGui ) {
            j++;
        }
    }

    TerminalGui terminalGuis[j];
    int k = 0;
    for( Component c : comps ) {
        if( c instanceof TerminalGui ) {
            terminalGuis[k] = c;
            k++;
        }
    }
    return terminalGuis;
}

より良い方法は?(インターフェイス)this.getComponents()のインスタンスであるすべてのオブジェクトを取得したい。TerminalGui

4

3 に答える 3

2

私はこれを行います:

public TerminalGui[] getTerminalGuis() {
    Components comps[] = getComponents();
    List<TerminalGui> list = new ArrayList<TerminalGui>();

    if (comps == null) return null;

    for( Component c : comps ) {
        if( c instanceof TerminalGui ) {
            list.add(c);
        }
    }

    return list.toArray(new TerminalGui[list.size()]);
}
于 2013-01-30T11:29:43.523 に答える
2

@NikolayKuznetsovの答えは、最小限のコードとして最適です。しかし、ここであなたのバージョンは修正されました。だからあなたは可能性を認識しています。

public TerminalGui[] getTerminalGuis() {
    Component[] comps = this.getComponents();
    int j = 0;
    for (int i = 0; i < comps.length; i++) {
        if (comps[i] instanceof TerminalGui) {
            j++;
        }
    }

    TerminalGui[] terminalGuis = new TerminalGui[j];
    int k = 0;
    for (Component c : comps) {
        if (c instanceof TerminalGui) {
            terminalGuis[k] = c;
            k++;
        }
    }
    return terminalGuis;
}
于 2013-01-30T11:31:45.957 に答える
2

リストを操作できます

public TerminalGui[] getTerminalGuis() {
   Components comps[] = this.getComponents();
   List<TerminalGui> terminals = new ArrayList<TerminalGui>();
   int i;

      for( i = 0; i < comps.length ; ++i ) {
         if( comps[i] instanceof TerminalGui ) {
             terminals.add(comps[i]);
         }
      }
   return terminals.toArray(new TerminalGui[terminals.size()])

}
于 2013-01-30T11:32:06.377 に答える