gpt4 book ai didi

Java Class.isAssignableFrom 困惑

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:10:24 28 4
gpt4 key购买 nike

我发现原始类型问题

System.out.println("Integer.class.isAssignableFrom(int.class) = " + Integer.class.isAssignableFrom(int.class));
System.out.println("int.class.isAssignableFrom(Integer.class) = "+int.class.isAssignableFrom(Integer.class));

这两个语句都向调用者返回 false。所以拳击似乎不适用于这里。我的问题是我的观察是否正确,或者是否有其他 API 可以正确地进行此测试?

--------------------------------后续------------ --------------------------------

正如我所说,我主要想在使用反射时检查一个对象是否可分配给一个字段。我希望该机制在运行时可以更精确,所以我做了这样的实现。

    public static boolean isAssignableFrom(final Field field, final Object obj) {


if (field.getType().equals(Integer.class) || field.getType().equals(int.class)) {
return obj.getClass().equals(Integer.class) || field.getType().equals(int.class);
} else if (field.getType().equals(Float.class) || field.getType().equals(float.class)) {
return obj.getClass().equals(Float.class) || field.getType().equals(float.class);
} else if (field.getType().equals(Double.class) || field.getType().equals(double.class)) {
return obj.getClass().equals(Double.class) || field.getType().equals(double.class);
} else if (field.getType().equals(Character.class) || field.getType().equals(char.class)) {
return obj.getClass().equals(Character.class) || field.getType().equals(char.class);
} else if (field.getType().equals(Long.class) || field.getType().equals(long.class)) {
return obj.getClass().equals(Long.class) || field.getType().equals(long.class);
} else if (field.getType().equals(Short.class) || field.getType().equals(short.class)) {
return obj.getClass().equals(Short.class) || field.getType().equals(short.class);
} else if (field.getType().equals(Boolean.class) || field.getType().equals(boolean.class)) {
return obj.getClass().equals(Boolean.class) || field.getType().equals(boolean.class);
} else if (field.getType().equals(Byte.class) || field.getType().equals(byte.class)) {
return obj.getClass().equals(Byte.class) || field.getType().equals(byte.class);
}
return field.getType().isAssignableFrom(obj.getClass());
}

}

这似乎是我能做的最好的 -_-!谢谢

最佳答案

我想,来自 Apache commons-lang 的 ClassUtils.isAssignable(Class, Class, boolean) 可以提供帮助。

JavaDoc

关于Java Class.isAssignableFrom 困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14151883/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com