Take the following example:
private int[] list;
public Listing() {
// Why can't I do this?
list = {4, 5, 6, 7, 8};
// I have to do this:
int[] contents = {4, 5, 6, 7, 8};
list = contents;
}
Why can't I use shorthand initialization? The only way I can think of getting around this is making another array and setting list
to that array.
Try
list = new int[]{4, 5, 6, 7, 8};
.When you define the array on the definition line, it assumes it know what the type will be so the
new int[]
is redundant. However when you use assignment it doesn't assume it know the type of the array so you have specify it.Certainly other languages don't have a problem with this, but in Java the difference is whether you are defining and initialising the fields/variable on the same line.
Besides using
new Object[]{blah, blah....}
Here is a slightly shorter approach to do what you want. Use the method below.PS - Java is good, but it sucks in situations like these. Try ruby or python for your project if possible & justifiable. (Look java 8 still has no shorthand for populating a hashmap, and it took them so long to make a small change to improve developer productivity)