- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
String.class.getClass()
不难理解,就是返回一个Class Object,表示String Object的运行时类。但是当调用 Class.class.getClass()
时发生了什么,我是否可以将其理解为返回一个代表 Class 对象本身的运行时类的 Class 对象?这如何在 Java 反射 API 中实现?
最佳答案
a Class object that represent the run time class of Class object itself?
是的。
但是 String.class.getClass()
是一回事。
String.class
已经表示“表示 String 类的 Class 类型的对象”。调用 .getClass()
意味着“表示 Class 类的 Class 类型的对象”,因为我们是在 Class 类型的对象上调用它。
如果您有一个字符串对象,例如“hi mom”,那么您可以使用 .getClass()
反射(reflect)它:("hi mom").getClass( )
例如。 IIRC,在正常情况下,这将返回与 String.class
完全相同的对象,因为每个类只有一个 Class
对象(每个 ClassLoader
使用中)。
How can this be implemented in Java reflection API?
每次加载类的字节码时,都会创建一个类对象并将其与该字节码相关联。每个对象在概念上都保留对表示其类的 Class 实例的“隐藏”引用,该引用由构造函数自动设置。 Class 对象将此引用设置为表示 Class 类的 Class 对象。特别是,表示 Class 类的 Class 对象具有对自身的引用。
关于java - 调用 Class.class.getClass() 时到底发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6622167/
为什么这在 Java 中可行: this.getClass().getClass().getClass().getClass()... 为什么会出现这种无限递归? 只是好奇。 最佳答案 这里没有无限递
我正在测试Object是否等于特定的class类型。例如: @Override public void itemStateChanged(ItemEvent e) { if (e.getSta
详解java中this.getClass()和super.getClass()的实例 前言: 遇到this.getClass()和super.getClass()的返回值感到疑惑,经过探索豁然开
Blockquote public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == nul
我正在尝试比较两个相同的对象。当页面第一次加载时,它们是相等的,但是当我第二次刷新页面时,尽管数据或对象没有改变,但它们并不相等。 我在做什么。 我有一个 CurrentUser obj,我在登录时将
我的 MyClass 类中有 equals() 的 @Override: @Entity( name = "MyClass" ) @Table( name = "my_class" ) public
我在这里真的是指身份平等。 例如,以下是否总是打印 true? System.out.println("foo".getClass() == "fum".getClass()); 最佳答案 是的,类标
getClass().getClassLoader().getResource()和getClass.getResource()有什么区别? 从资源中检索文件时,在什么情况下应该使用哪一个? 最佳答案
这个问题已经有答案了: Different ways of loading a file as an InputStream (6 个回答) 已关闭 5 年前。 我正在浏览 ImageIO,并且在网络
有没有办法创建另一个对象类型的新对象? 示例: Soldier extends Person Accountant extends Person Person 的每个子类都有一个接受(出生日期和死亡日
FXMLLoader类的 load()方法用于加载FXML文件。那么 getClass().getResource() 是在做什么 Parent root = FXMLLoader.load(getC
考虑这段代码: class A { static int i=3; } public class TT extends A { public static void main(Stri
为什么第一行有效而第二行无效: Class c1 = (new Object()).getClass().getClass(); Class> c2 = (new O
我见过类似的问题并且有一个可行的解决方案,但我没有深入理解为什么我的示例中的前四次尝试(c1、c2、c3 和 c4)无法编译。归结为我不理解 this.getClass() 返回的编译时类是什么。 i
这个 Actor 安全吗? private void foo(T value) { final Class aClass = (Class) value.getClass(); } 是否存在
我在学习 Java 时遇到了一件奇怪的事情。考虑以下程序: public class GetClassNameInheritance { public static void main(Str
我编写了以下代码: public class AnonymousClasses { public void sayHello(){ } public interface Greetin
我正在尝试创建其中包含文本字段的对话框。代码如下 private void showBatchDialog() { Dialog dialog = new Dialog(); dial
我正在尝试使用 getClass() 方法并具有以下代码: class parent{} class child extends parent{} public class test { pu
在 Java 中,我想为方法编写测试(简化片段): public class MyClass { private static final Set SOME_SET = new HashSet
我是一名优秀的程序员,十分优秀!