gpt4 book ai didi

java - 给定一个 Class,我可以确定它是否是特定类型的子类吗?

转载 作者:搜寻专家 更新时间:2023-11-01 02:33:13 27 4
gpt4 key购买 nike

我正在尝试编写一个接受 Class<?> 的 Java 函数并返回一个字符串,表示对相应 JavaScript 类型的合理猜测。输入/输出示例:

   in              |  out
---------------------------------
String.class | "string"
int.class | "number"
double.class | "number"
Integer.class | "number"
Date.class | "date" (yes, I know that typeof new Date() === 'object')
boolean.class | "boolean"
Foo.class | "object"

这是我到目前为止所得到的,它似乎大部分都有效:

String jsType(Class<?> clazz)
{
if (clazz.equals(String.class) return "string";

if (clazz.equals(boolean.class) return "boolean";

try
{
clazz.asSubclass(Number.class);
return "number";
}
catch (Exception e){}

try
{
clazz.asSubclass(Date.class);
return "date";
}
catch (Exception e){}

return "object";
}

但是,它不能正确返回数字基元的“数字”,例如int.class , double.class等,虽然它确实适用于包装器类型,Integer.class

  • 原始类型的类文字有什么特别之处吗?
  • 有没有一种方法可以编写比一堆if-else更好的函数?语句,对于我感兴趣的每个类?

最佳答案

有两个问题。首先,答案是基本类型的类文字没有什么特别之处,除了显而易见的:它们代表基本类型。对于此类类型,“isPrimitive()”方法将返回 true。您似乎期望原始“类”类型是 Number 的子类,但事实并非如此,如您的示例所示。

有没有比一堆 if-else 语句更好的方法来编写函数?可能不会!尽管我会尽量避免使用异常作为测试,但应该为真正的异常情况保留异常;使用 isAssignableFrom(Class<?>)相反 - 尽管我想这更多是风格问题(也许还有效率问题)。

关于java - 给定一个 Class<?>,我可以确定它是否是特定类型的子类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4466491/

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