3

私はアプリケーションを開発しています..

    class Wheel {
    private int size;

    Wheel(int s) {
        size = s;
    }

    void spin() {
        System.out.print(size + " inch wheel spinning, ");
    }

}

public class Bicycle {
    public static void main(String[] args) {
        Wheel[] wa = { new Wheel(15), new Wheel(17) };
        for (Wheel w : wa)
            w.spin();
    }
}

Wheel[] wa = { new Wheel(15), new Wheel(17) };しかし、もっと簡単な言葉で表現するにはどうすればよいか教えてください。

4

3 に答える 3

6

Wheel[] wa = { new Wheel(15), new Wheel(17) };あなたが得ようとしているのと同じくらい簡単です。あなたは正確に何を期待していますか - もっと単純にする必要がある問題がありますか?

単純ではありませんが、さらに s を追加できるものを作成したい場合はWheel、次のように個別に分割する必要があります...

Wheel[] wa = new Wheel[2];
wa[0] = new Wheel(15);
wa[1] = new Wheel(17);

またはおそらく...

int[] sizes = {15,17};
Wheel[] wa = new Wheel[sizes.length];
for (int i=0;i<sizes.length;i++){
    wa[i] = new Wheel(sizes[i]);
}

これらは単純ではありませんが、作成する がたくさんある場合は、はるかに優れていWheelます。

ただし、 sが 2 つしかない場合Wheel、ステートメントは非常に簡単です。

于 2012-04-29T06:18:13.590 に答える
0

ホイールの配列を作成するための短い式が必要な場合は、追加のメソッドなしで取得できる単純なものがあります。

次のようなファクトリ メソッドを作成できます。

class Wheel {

    public static Wheel[] newWheels( int[] sizes ){
        Wheel[] result = new Wheel[sizes.length];
        for( int i=0; i < sizes.length; i++ )
           result[i] = new Wheel( sizes[i] );
        return result;
    }

    // ... other stuff ...
}

これにより、ホイール作成ステートメントが作成されます。

Wheel[] wa = Wheel.newWheels( new int[]{ 15, 17 } );

所定のサイズのホイールが 2 つしかない場合はそれほど単純ではありませんが、より多くのホイールがある場合、またはサイズが事前に決定されていない場合は、これは読みやすいかもしれません。

于 2012-04-29T06:33:02.400 に答える
0
Wheel[] wa = { new Wheel(15), new Wheel(17) };

異なる数のホイールのコレクションを維持しているように見えます。

したがって、セットごとに作成するjava.util.Set<E>か (コレクションに複製ホイールが含まれていない場合)、使用することができますjava.util.List<E>(複製が許可されます) 。

arrayまた、 map( ) にまたは in に入れることができますjava.util.Map<K,V>。マップは、特定のSet or List.

    List<Wheel> wh1=new ArrayList<Wheel>(15);
    List<Wheel> wh2=new ArrayList<Wheel>(17);
    Map<String,List<Wheel>> wa=new HashMap<String,List<Wheel>>();
    wa.put("1stList", wh1);
    wa.put("2ndList", wh2);
于 2012-04-29T06:45:08.807 に答える