gpt4 book ai didi

java - 如何测试声明为 "public class"的类型是使用 java.lang.Class 的类?

转载 作者:搜寻专家 更新时间:2023-10-31 08:15:13 25 4
gpt4 key购买 nike

java.lang.Class 有方法来测试给定的类型是否是:

  • 是注解
  • 是数组
  • 是枚举
  • 是接口(interface)
  • 是原始的

但是如何测试类型为 Class 的对象(instanceof Classtrue)表示声明的非抽象类而不是接口(interface)、枚举、原始类、数组等。例如:

package org.acme;

public class ACME {

public ACME() {

}

public static void main(String[] args) {
Class clazz = Class.forName("org.acme.ACME");
// Expected I could use a clazz.isClass().
}
}

我一直在寻找 isClass 方法,但没有。


更新

我看到了我的问题所引起的困惑 - 而有些人却理解了我的问题。

我做了一些进一步的研究,发现在 .NET 中

http://msdn.microsoft.com/en-us/library/system.type.isclass.aspx ,

这是一个 isClass 成员,我在 java.lang.Class 中寻找类似的方法。

我现在知道在 Java 中等效的是测试所有其他 isXXX 方法以发现它不是一个类。

最佳答案

您的问题似乎脱节了。 Everything 是一个类(除了基元 - isPrimitive() 方法实际上意味着该类是一个自动框类型)。

Class clazz = Class.forName("org.acme.ACME");
// Expected I could use a clazz.isClass().

那是多余的。你已经知道这是一个类。因为你有一个 Class 的实例。

出于某种原因,您似乎想知道它不是您列出的方法告诉您的任何类的类型,在这种情况下,您只需进行检查以否定那些选项:

if (!clazz.isAnnotation() &&
!clazz.isArray() /* && ... etc */ )
{

// Not any of those things.

}

关于java - 如何测试声明为 "public class"的类型是使用 java.lang.Class 的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17197647/

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