首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种方法可以检查使用泛型使用的变量类型?

问是否有一种方法可以检查使用泛型使用的变量类型?
EN

Stack Overflow用户
提问于 2017-11-08 09:29:30
回答 2查看 97关注 0票数 0

以这个伪码为例:

代码语言:javascript
复制
public static<T> int findNumber(T xNumber, double a, int b){
    if (xNumber == int) {
        // do something... return some number...
    } else {
        return null; 
    }

有什么方法可以在实际的Java代码中表达这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-08 09:41:20

您不能使用Java代码来表示这个特定的情况。

您可能会发现答案在这里的原因。

但是,如果希望在整数中使用泛型,则整数类支持泛型。它还实现了本机int使用的所有基本操作(+ -*/ %)。在您的示例中,您可以使用:

代码语言:javascript
复制
if (xNumber instanceof Integer)

甚至于

代码语言:javascript
复制
if (xNumber.getClass() == Integer.getClass())

正如@Stultuske在评论中建议的那样。

编辑:关于你的课程设计的评论也是非常真实的。您可能需要重新设计代码,所以您不必检查泛型对象的类型(特别是在检查单个类类型之后)。

票数 1
EN

Stack Overflow用户

发布于 2017-11-08 09:48:32

类数引导一个几乎隐藏的存在,但非常有用。

代码语言:javascript
复制
public static <T extends Number> int findNumber(...)
    ... xNumber.intValue() // longValue(), doubleValue()
    if (xNumber instanceof Integer) ...

因为类型的擦除是不可行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47175986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档