diff options
| author | Sam Ruby <rubys@php.net> | 2000-10-27 10:27:19 +0000 | 
|---|---|---|
| committer | Sam Ruby <rubys@php.net> | 2000-10-27 10:27:19 +0000 | 
| commit | 33c8f5053422ceb0a89cc7bba2c1cf267c32f4b7 (patch) | |
| tree | f3d28eefa90c031fc46bf6014e1de2f9efa60dd9 /ext/java/reflect.java | |
| parent | b725c6eef3b868eb8bbfe5b229314bb53144e475 (diff) | |
| download | php-git-33c8f5053422ceb0a89cc7bba2c1cf267c32f4b7.tar.gz | |
Allow strings to be passed to methods expecting primitive types.
Diffstat (limited to 'ext/java/reflect.java')
| -rw-r--r-- | ext/java/reflect.java | 18 | 
1 files changed, 16 insertions, 2 deletions
| diff --git a/ext/java/reflect.java b/ext/java/reflect.java index c45e2fbbfd..2bafe5cec8 100644 --- a/ext/java/reflect.java +++ b/ext/java/reflect.java @@ -208,7 +208,7 @@ public class reflect {              if (c== Character.TYPE || ((String)args[i]).length()>0)                weight+=((String)args[i]).length();              else -              weight+=9999; +              weight+=64;            } else {  	    weight+=9999;            } @@ -237,7 +237,21 @@ public class reflect {      Object result[] = args;      for (int i=0; i<args.length; i++) {        if (args[i] instanceof byte[] && !parms[i].isArray()) { -        result[i] = new String((byte[])args[i]); +        Class c = parms[i]; +        String s = new String((byte[])args[i]); +        result[i] = s; +        try { +          if (c == Boolean.TYPE) result[i]=new Boolean(s); +          if (c == Byte.TYPE)    result[i]=new Byte(s); +          if (c == Short.TYPE)   result[i]=new Short(s); +          if (c == Integer.TYPE) result[i]=new Integer(s); +          if (c == Float.TYPE)   result[i]=new Float(s); +          if (c == Long.TYPE)    result[i]=new Long(s); +          if (c == Character.TYPE && s.length()>0)  +            result[i]=new Character(s.charAt(0)); +        } catch (NumberFormatException n) { +          // oh well, we tried! +        }        } else if (args[i] instanceof Number && parms[i].isPrimitive()) {          if (result==args) result=(Object[])result.clone();          Class c = parms[i]; | 
