You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ad...@apache.org on 2010/04/08 00:00:21 UTC
svn commit: r931702 -
/commons/sandbox/convert/trunk/src/main/java/org/apache/commons/convert/Util.java
Author: adrianc
Date: Wed Apr 7 22:00:21 2010
New Revision: 931702
URL: http://svn.apache.org/viewvc?rev=931702&view=rev
Log:
Improved Util.instanceOf method.
Modified:
commons/sandbox/convert/trunk/src/main/java/org/apache/commons/convert/Util.java
Modified: commons/sandbox/convert/trunk/src/main/java/org/apache/commons/convert/Util.java
URL: http://svn.apache.org/viewvc/commons/sandbox/convert/trunk/src/main/java/org/apache/commons/convert/Util.java?rev=931702&r1=931701&r2=931702&view=diff
==============================================================================
--- commons/sandbox/convert/trunk/src/main/java/org/apache/commons/convert/Util.java (original)
+++ commons/sandbox/convert/trunk/src/main/java/org/apache/commons/convert/Util.java Wed Apr 7 22:00:21 2010
@@ -39,26 +39,50 @@ public class Util {
* @return true if objectClass is a class or sub-class of, or implements typeClass
*/
public static boolean instanceOf(Class<?> objectClass, Class<?> typeClass) {
- if (typeClass.isInterface() && !objectClass.isInterface()) {
- while (objectClass != null) {
+ if (objectClass == typeClass) {
+ return true;
+ }
+ if (objectClass.isInterface()) {
+ if (typeClass.isInterface()) {
+ // objectClass == interface, typeClass == interface
Class<?>[] ifaces = objectClass.getInterfaces();
for (Class<?> iface: ifaces) {
if (iface == typeClass) {
return true;
}
}
- objectClass = objectClass.getSuperclass();
+ } else {
+ // objectClass == interface, typeClass != interface
+ Class<?>[] ifaces = typeClass.getInterfaces();
+ for (Class<?> iface: ifaces) {
+ if (iface == objectClass) {
+ return true;
+ }
+ }
}
- return false;
} else {
- while (objectClass != null) {
- if (objectClass == typeClass) {
- return true;
+ if (typeClass.isInterface()) {
+ // objectClass != interface, typeClass == interface
+ while (objectClass != null) {
+ Class<?>[] ifaces = objectClass.getInterfaces();
+ for (Class<?> iface: ifaces) {
+ if (iface == typeClass) {
+ return true;
+ }
+ }
+ objectClass = objectClass.getSuperclass();
+ }
+ } else {
+ // objectClass != interface, typeClass != interface
+ while (objectClass != null) {
+ if (objectClass == typeClass) {
+ return true;
+ }
+ objectClass = objectClass.getSuperclass();
}
- objectClass = objectClass.getSuperclass();
}
- return false;
}
+ return false;
}
/** Returns <code>true</code> if <code>str</code> is <code>null</code>