Just to summarize, the problem was that:
new NSArray( new int [] { ... } )
translates to the single-object NSArray constructor: NSArray( Object ), whereas:
new NSArray( new Integer [] { ... } )
translates to the object-array constructor: NSArray( Object [] ), because an int [] is not a subtype of Object [] (unlike an Integer []), and I don't think Java will auto-box an int [] into an Integer [].
This has been mentioned on the list before, but using Java's auto-boxing -- especially without using generics -- causes a lot of these head-scratcher bugs. My advice is to disable it, by telling the compiler to treat boxing and unboxing as errors.
Hi!
You don't have to do new Integer(x) for all the integers. I have this on
my code and it works:
private NSArray<Integer> monthList = new NSArray<Integer>( new Integer[]
{
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 } );
Try disabling 'Boxing and unboxing conversions:' in Preferences -> Java -> Compiler -> Errors/Warnings -> Potential programming problems
I have a wo popup button
YearPopUpButton: WOPopUpButton {
item = intSelection;
list = YearList;
selection = anAppliedClass.appliedYear;
}
and the relevant code is
public NSArray YearList = new NSArray(new int[]{2000, 2001, 2002,
2003, 2004, 2005, 2006, 2007, 2008, 2009});
public int intSelection;
appliedYear is an Integer.
When run, I get:
While trying to set the field "intSelection" on an object of type
edu.stanford.ee.classmgmt.apply.ui.AppliedClassPage we expected a int
but received a [I with a value of [I@70d9cbcb. This often happens if
you forget to use a formatter.
Setting a formatter doesn't seem to help. I'm guessing I need some
indirection to setting the appliedYear value, but it seems the error
is more due to the fact that its not liking the NSArray. Do I need to
generate a list of new Integer(2000), new Integer(2001).. etc?
|