java - someMethod(SomeClass.class) 的底层过程

标签 java reflection

在 hibernate 中创建我们使用的标准

Criteria criterea=session.createCritera(SomeClass.class)

它也可能在其他一些示例中可用,但我无法理解这些类型方法的结构。

注意 这是我试图用来理解SomeClass.class 像参数一样使用的例子

我的问题是 SomeClass.class 的目的是什么?我们为什么需要它,使用它作为参数有什么好处。

编辑 它不是重复的,但与 this question 有字符串连接

最佳答案

这是什么.class语法?

如果附上 .class在类名的末尾,你会得到 Class<T>类对应的对象。

例子:

  • String.class返回 Class<String> 的实例
  • Integer.class返回 Class<Integer> 的实例

类对象能做什么

反省!如果你有权访问一个类对象,你可以做各种很酷的事情!您可以调用方法、获取和设置字段的值...

为什么在 Hibernate 中使用它?

我以前没有使用过 hibernate,但这种语法也用在其他库中,尤其是在 ORM 或 JSON 序列化程序中。我将使用 JSON 序列化程序作为示例,因为我对它们更熟悉。

在 JSON 序列化器中,你需要给它一个类对象,因为它需要获取你想要序列化为 JSON 的所有字段。它使用反射来获取和设置这些字段的值,然后将它们转换为 JSON。当它反序列化JSON时,它会找到JSON中需要设置名称的字段。这些操作需要 Class对象,因为没有它,Java 怎么知道它应该在哪个类中找到该字段?此外,要创建一个带有反射的新对象,一个 Class也是需要的!

关于java - someMethod(SomeClass.class) 的底层过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39879991/

相关文章:

java - JScrollPane 中的滚动条在 JTables 上不起作用

Java Canvas 绘图

c# - 数组中的反射和递归 - StackOverflowException

C++反射是如何实现的

c# - 如何迭代 C# 类查找特定类型的所有实例,然后在每个实例上调用一个方法

java - 如何获取 Java 8 方法引用的 MethodInfo?

java - 为什么 MySQL 数据库访问需要在服务器 URL 中使用正斜杠?

java - 多线程 - 为什么下面的程序表现得如此奇怪?

Java:如何检查字段是否为 java.util.Collection 类型

java - 需要在此表上添加表头