gpt4 book ai didi

java - 比较参数类型

转载 作者:行者123 更新时间:2023-12-01 12:47:23 26 4
gpt4 key购买 nike

我有一个方法,用于将参数类型与给定的参数类型进行比较。

private boolean typesMatch(Class<?>[] one, Object[] two)
{
if(one.length != two.length)
return false;

for (int i = 0; (i < one.length)&&(i < two.length); i++)
if(!one[i].equals(two[i].getClass()))
return false;

return true;
}

例如,在one[]中,可能有String, boolean。然而,在第二个中,有String, Boolean。你看到我的问题了吗?当它比较 boolean 和 Boolean 时,它返回 false。如何解决这个问题,以便我不必为每个基本类型使用“if 语句”来解包它们?

编辑:我的意思是解开第二个数组中的包装类,以便它与第一个数组中的原始类型相当。

最初,数组二中的 boolean 对象作为原始 boolean 值添加到其中。

最佳答案

这应该可以解决您的问题:

private static boolean typesMatch(Class<?>[] one, Object[] two)
{
if(one.length != two.length) {
return false;
}

for (int i = 0; (i < one.length)&&(i < two.length); i++){
if ((one[i].isPrimitive() && two[i].getClass().getSimpleName().equalsIgnoreCase(one[i].getName())) ||
(two[i].getClass().isPrimitive() && one[i].getSimpleName().equalsIgnoreCase(two[i].getClass().getName()))) {
return true;
}
if(!one[i].equals(two[i].getClass())) {
return false;
}
}

return true;
}

关于java - 比较参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24562930/

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