Skip to content

Commit 62d725e

Browse files
committed
* BUG: Reflection: Correctly handle generic type comparison
1 parent 41cace1 commit 62d725e

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

src/main/java/fr/zcraft/zlib/tools/reflection/Reflection.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,10 @@
2929
*/
3030
package fr.zcraft.zlib.tools.reflection;
3131

32+
import org.apache.commons.lang.ArrayUtils;
3233
import org.bukkit.Bukkit;
3334

34-
import java.lang.reflect.Constructor;
35-
import java.lang.reflect.Field;
36-
import java.lang.reflect.InvocationTargetException;
37-
import java.lang.reflect.Method;
38-
import java.lang.reflect.Type;
35+
import java.lang.reflect.*;
3936
import java.util.ArrayList;
4037
import java.util.Arrays;
4138
import java.util.Collection;
@@ -188,7 +185,7 @@ static public Field getField(Class<?> klass, Class<?> type) throws NoSuchFieldEx
188185
{
189186
for (Field field : klass.getDeclaredFields())
190187
{
191-
if (field.getType().equals(type))
188+
if (typeIsAssignableFrom(field.getType(), type))
192189
{
193190
field.setAccessible(true);
194191
return field;
@@ -425,6 +422,9 @@ static private boolean nameMatches(String methodName, String pattern)
425422

426423
static public boolean typeIsAssignableFrom(Type source, Type destination)
427424
{
425+
if(source instanceof ParameterizedType) source = ((ParameterizedType) source).getRawType();
426+
if(destination instanceof ParameterizedType) source = ((ParameterizedType) destination).getRawType();
427+
428428
if(source instanceof Class && destination instanceof Class)
429429
{
430430
return ((Class<?>)destination).isAssignableFrom((Class) source);

0 commit comments

Comments
 (0)