当前位置: 首页 > 面试题库 >

检查原始字段的类型

慕容渊
2023-03-14
问题内容

我正在尝试确定对象上字段的类型。当对象传递给我时,我不知道对象的类型,但我需要查找为longs的字段。区分框Longs
很容易,但是原始图元long似乎更加困难。

可以 确保传递给我的对象只有Longs,没有基元,但我宁愿没有。所以我有:

for (Field f : o.getClass().getDeclaredFields()) {
    Class<?> clazz = f.getType();
    if (clazz.equals(Long.class)) {
        // found one -- I don't get here for primitive longs
    }
}

一种似乎可行的hacky方法是:

for (Field f : o.getClass().getDeclaredFields()) {
    Class<?> clazz = f.getType();
    if (clazz.equals(Long.class) ||  clazz.getName().equals("long")) {
        // found one
    }
}

如果有的话,我真的很希望有一种更清洁的方法。如果没有更好的方法,那么我认为要求我接收的对象仅使用Long(not long)将是更好的API。

有任何想法吗?


问题答案:

您使用错误的常量来检查Long原语-use
Long.TYPE,可以在包装器上找到其他每个基本类型都带有类似名称的常量。如:Byte.TYPECharacter.TYPE等等。



 类似资料:
  • 我有映射: 和一些文件: 等等。 我尝试进行查询: 未找到任何结果。如果我尝试将同一查询按字段与其他类型(不是字符串,也没有原始子字段)一起使用,它会起作用。我应该如何为这种情况编写查询?谢谢 P、 美国字段“FieldA”具有子字段raw,因为我需要同时分析和不分析此字段

  • 如何获取字段的“真实”值? 我有一个框,我使用的是较新的HTML5输入类型: 这在Chrome29中得到了支持: (至少在Chrome 29中) 如何获取控件的“原始”值? 我试着浏览了Chrome的输入框的其他属性列表: null

  • 问题内容: 我需要在Java中进行一些反射方法调用。这些调用将包括具有原始类型(int,double等)参数的方法。反射地查找方法时,指定此类类型的方法是int.class,double.class等。 挑战在于我要接受来自外部源的输入,该输入将动态指定类型。因此,我还需要动态地提出这些Class引用。想象一个带分隔符的文件,其中包含方法名称列表和参数类型列表: 如果输入类似,我知道我可以使用该C

  • 我正在关注Udacity上的Google Android教程,但在指定的代码中,我收到以下警告: 对“execute”的未检查调用(参数...)”作为原始类型“android.os.AsyncTask”的成员 关于此代码: 做某事任务: 任何人都可以解释这个警告以及如何解决它?它似乎应该按照说明工作...

  • 在模型查询API不够用的情况下,你可以使用原始的sql语句。django提供两种方法使用原始sql进行查询:一种是使用Manager.raw()方法,进行原始查询并返回模型实例;另一种是完全避开模型层,直接执行自定义的sql语句。 警告 编写原始的sql语句时,应该格外小心。每次使用的时候,都要确保转义了参数中的任何控制字符,以防受到sql注入攻击。更多信息请参阅防止sql注入。 进行原始查询 r

  • JavaScript 允许我们像使用对象一样使用原始类型(字符串,数字等)。JavaScript 还提供了这样的调用方法。我们很快就会学习它们,但是首先我们将了解它的工作原理,毕竟原始类型不是对象(在这里我们会分析地更加清楚)。 我们来看看原始类型和对象之间的关键区别。 一个原始值: 是原始类型中的一种值。 在 JavaScript 中有 7 种原始类型:string,number,bigint,