summaryrefslogtreecommitdiff
path: root/ext/java/reflect.java
diff options
context:
space:
mode:
authorSam Ruby <rubys@php.net>2000-10-27 10:27:19 +0000
committerSam Ruby <rubys@php.net>2000-10-27 10:27:19 +0000
commit33c8f5053422ceb0a89cc7bba2c1cf267c32f4b7 (patch)
treef3d28eefa90c031fc46bf6014e1de2f9efa60dd9 /ext/java/reflect.java
parentb725c6eef3b868eb8bbfe5b229314bb53144e475 (diff)
downloadphp-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.java18
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];