gpt4 book ai didi

Java:在运行时获取引用类型

转载 作者:行者123 更新时间:2023-12-02 09:21:34 26 4
gpt4 key购买 nike

假设有两个类:BeverageBeer .

public class Beverage { }
public class Beer extends Beverage { }

Java中有没有办法同时获取存储在内存中的引用类名实际类名

请参阅以下代码:

Beverage beverage = new Beer()
classInfo(beverage)

public void classInfo(Object obj) {
System.out.println("Class saved in memory: " + obj.getClass()); // class Beer
System.out.println("Reference type: " + ???); // class Beverage
}

一种解决方案可能是在方法调用中要求类,这样我就可以知道引用类型和存储在内存中的实际类型:

public void classInfo(Object obj, Class<?> referenceClass)

但是我想知道java中是否还有其他方式

编辑:为什么我需要这个?在我们的 Web 应用程序的生产代码中,我们根据类注释 (ORM) 创建对数据库的请求。在我们的代码中,我们创建扩展类,例如 Beer扩展Bevarage 。这些扩展对象有一些额外的计算属性。现在我们想将这些扩展对象保存回数据库,但是这些扩展属性没有映射到任何表,所以插入失败。

最佳答案

不存在您的示例所暗示的“引用类型”之类的东西。您可以将同一对象的引用存储在任意数量的所有可能类型的变量中。

最接近您的引用类型的想法是一个特定变量的声明类型,例如您的饮料,如果它是一个实例变量,将有一个声明的类型您可以通过反射找到的类型。另一方面,如果它是一个局部变量,那么它的声明类型在运行时根本不存在,您可以通过这种方式找到。

关于Java:在运行时获取引用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58661017/

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