Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查类是否表示特定的基元类型_Java_Primitive Types - Fatal编程技术网

Java 如何检查类是否表示特定的基元类型

Java 如何检查类是否表示特定的基元类型,java,primitive-types,Java,Primitive Types,我需要确定一个特定的类是否是一个特定的基元类型,在我的例子中是int。我找到了Class.isPrimitive()方法,但我不需要检查所有的原语,我需要一个特定的原语。我注意到类名等于原语名,我考虑检查candidateClass.getName().equals(“int”)——但这似乎是一种不好的做法(以及“魔术字符串”用法) 如何使用Java API正确检查特定的基元类型?每个基元类型的包装器都提供一个静态字段,其中包含这些包装器的基元类型类。例如:Integer.TYPE Class.

我需要确定一个特定的类是否是一个特定的基元类型,在我的例子中是
int
。我找到了
Class.isPrimitive()
方法,但我不需要检查所有的原语,我需要一个特定的原语。我注意到类名等于原语名,我考虑检查
candidateClass.getName().equals(“int”)
——但这似乎是一种不好的做法(以及“魔术字符串”用法)


如何使用Java API正确检查特定的基元类型?

每个基元类型的包装器都提供一个静态字段,其中包含这些包装器的基元类型类。例如:
Integer.TYPE

Class.isPrimitive的文档提供了有关在Java中实现基元类型类的信息:

有九个预定义的类对象来表示八个基本类型和void。它们是由Java虚拟机创建的,与它们所表示的基本类型具有相同的名称,即boolean、byte、char、short、int、long、float和double。 这些对象只能通过以下公共静态final变量访问,并且是此方法返回true的唯一类对象

一些代码供参考:

public class PrimitiveClassTest {
    static class Foo{
       public int a;
    }
    
    public static void main(String[] args) throws NoSuchFieldException, SecurityException {
        Class<?> intClass = Foo.class.getField("a").getType();
        System.out.println("obj.int field class: "+intClass);
        System.out.println("Integer.TYPE class:  "+Integer.TYPE);
        System.out.println("are they equal?      "+Integer.TYPE.equals(intClass));
    }
}

这可以大大简化为:

 intClass == int.class
这是因为
文档说明:

基本Java类型(boolean、byte、char、short、int、long、float和double)以及关键字void也表示为类对象


我需要确定一个特定的类是否是一个特定的基元类型,那么它有什么问题:
System.out.println(intClass==int.class)?@Eugene没问题!事实上,这将是一个很好的答案。这是什么时候推出的?我在谷歌上找不到任何关于原语确实公开类字段的主题的信息。我现在在谷歌上搜索了一下(可能是错误的关键词吧?),没找到。这确实让我感到惊讶,因为原始名称是关键字,我永远不会期望它们有任何对象关联。这就像做
if.negate(条件)
。奇怪的
 intClass == int.class