Creating an array while passing it as an argument in Java

后端 未结 4 688
没有蜡笔的小新
没有蜡笔的小新 2020-12-18 19:09

Is there a way to create an array of objects as part of a constructor or method? I\'m really not sure how to word this, so I\'ve included an example. I have an enum, and

相关标签:
4条回答
  • 2020-12-18 19:48

    Is there a way you can pass an array without creating an array?

    No, but you could use varargs to make it mostly-invisible, although that int at the end might need to move.

    0 讨论(0)
  • 2020-12-18 20:04

    Following @Dave's suggest I would use a vararg

    QWERTY(1, 6, 0.5, 1.3, 23.1);
    DVORAK(5, 91, 0.1, 0.2, 4.3, 1.1);
    CHEROKEE(2, 11, 22.0);
    
    private final int number, thingy;
    private final double[] theArray;
    
    private KeyboardStuff(int number, int thingy, double... theArray) {
        // do things
    }
    

    It is pretty rare that using a float is better than using a double. double has less rounding error and only uses 4 more bytes.

    0 讨论(0)
  • 2020-12-18 20:06

    You can try with new float[] { ... }.

    public enum KeyboardStuff {
    
        QWERTY(1, new float[] {0.5f, 1.3f, 23.1f}, 6);
        DVORAK(5, new float[] {0.1f, 0.2f, 4.3f, 1.1f}, 91);
        CHEROKEE(2, new float[] {22.0f}, 11);
    
        private int number, thingy;
        private float[] theArray;
    
        private KeyboardStuff(int i, float[] anArray, int j) {
            // do things
        }
    
    }
    
    0 讨论(0)
  • 2020-12-18 20:10

    If using Lists's instead of arrays is an option, future versions of Java might start supporting a 'collection literals' syntax which unfortunately doesn't seem to have made it into Java 8:

    public enum KeyboardStuff {
    
        QWERTY(1, [0.5f, 1.3f, 23.1f], 6);
        DVORAK(5, [0.1f, 0.2f, 4.3f, 1.1f], 91);
        CHEROKEE(2, [22.0f], 11);
    
        private int number, thingy;
        private List<Float> values;
    
        private KeyboardStuff(int i, List<Float> values, int j) {
            // do things
        }
    
    }
    
    0 讨论(0)
提交回复
热议问题