Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Won't Fix
-
None
-
None
-
None
-
v1.0 on Java 1.6.0 on WinXP prof edn
Description
When a method, whether static or instance, has one and only one parameter of non-primitive type, it has an implicit default value of null. Is this intended?
class A{ static g2( Integer i ){ i } def g3( Integer i ){ i } static g4( int i ){ i } static g5( Integer i, Integer j ){ [ i, j ] } } //When no args supplied for one arg static method, default value of null assumed... assert A.g2( new Integer(7) ) == 7 assert A.g2() == null //Ditto for instance method... assert new A().g3( new Integer(8) ) == 8 assert new A().g3() == null //If parameter is primitive type, argument is mandatory as in Java... assert A.g4( 7 ) == 7 try{ A.g4(); assert false }catch(Throwable e){ assert e instanceof IllegalArgumentException } //When there's more than one parameter, both arguments also mandatory... assert A.g5( new Integer(7), new Integer(8) ) == [ 7, 8 ] try{ A.g5( new Integer(7) ); assert false }catch(Throwable e){ assert e instanceof MissingMethodException } try{ A.g5(); assert false }catch(Throwable e){ assert e instanceof MissingMethodException }