gpt4 book ai didi

java - Java 中的每个用户定义的 Class 是否都有一个与之关联的类 Class 对象?那么它和Reflection有什么不同呢?

转载 作者:行者123 更新时间:2023-11-29 04:58:47 25 4
gpt4 key购买 nike

无法理解 MyClass.class.getClassLoader()。这里的 .class 是什么?它是 class Class 的引用吗?

那么使用反射获取ClassLoader信息有什么不同呢?

最佳答案

Does every user defined Class in java have a Class object associated with it ?

是的。每个系统也定义了类。 (尽管 Class 对象在您尝试获取其引用之前可能不会创建。)

Not able to understand MyClass.class.getClassLoader(). What is .class here? Is it a reference of class Class ?

是的。或者更准确地说,它是 Class<MyClass> 类型的引用。它指的是与该类型对应的一个(且唯一的)Class 对象。


Then what is the difference in getting ClassLoader info using reflection ?

三者之间的区别

    MyClass.class

   String someClassName = ...

classloader.getClass(someClassName)

   Class.forName(someClassName)

在第一种情况下,类名是硬连线到您的代码中的,但表达式始终有效1,并且您获得的类对象的类型在编译时已知为 Class<MyClass>

在第二种和第三种(等价的)情况下,类名可以是运行时变量,但表达式可能会失败(例如因为命名的类不存在)并且类型仅在编译时已知为 Class<?> .

但是,假设一切正常,您获得的信息(即 Class 对象)在所有三种情况下都是相同的。


1 - 这可能言过其实。但是,您可能会看到异常的场景涉及处于错误状态的 JVM。你必须做一些非常糟糕的事情才能看到它们,比如捕获从之前的 ExceptionInInitializerErrorNoClassDefFoundError 恢复。

关于java - Java 中的每个用户定义的 Class 是否都有一个与之关联的类 Class 对象?那么它和Reflection有什么不同呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32794596/

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