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) };就像您将要得到的一样简单。您到底在期待什么 - 您是否有需要更简单的问题?

它并不简单,但是如果你想做一些允许你添加更多Wheels的东西,你需要将它单独分解出来,例如......

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]);
}

这些并不简单,但如果你有很多Wheels 要创建,它们会更好。

但是,如果您只有 2Wheel秒,那么您的陈述非常简单!

于 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 } );

当您只有两个预定尺寸的轮子时,这并不简单,但是如果您有更多的轮子,或者没有预定尺寸,这可能更具可读性。

于 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( 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 回答