gpt4 book ai didi

java - 使用运行时反射确定不在标准库(Java 或 Scala)中的基类

转载 作者:行者123 更新时间:2023-12-02 11:48:27 26 4
gpt4 key购买 nike

我正在从 Scala 类型生成 GraphQL 定义,但在运行时反射 API 中找不到任何内容,只能获取“用户定义”的基类,即不属于 Scala 或 Java 标准库的一部分。

到目前为止,我只弹出了一组我知道的内容,例如AnyObject 以及其他大约 8 个。这些仅出现在列表中,因为它们是我编写单元测试时出现的内容。理想情况下,我不需要手动列表,随着添加新类型,它似乎很脆弱,它可能会破坏。

我不知道这是否可以通过宏实现,但这不是一个选择。在尝试宏之后,发现它周围有太多错误,包括它导致编译器崩溃,并且该错误的修复应该在最新的 zinc 中,但我无法使用它,因为我' m 使用 Gradle,由于 1.x 系列中的命名空间更改,只能使用 0.x.x Zinc 系列。

话虽如此,有谁知道是否有一种方法可以确定不来自标准库的类型的基类?

最佳答案

我认为这样的功能不存在,甚至不应该存在。特别是我认为术语“标准库”在您的问题的上下文中定义得不够好。我的意思是为什么它应该从标准库中排除类,而不是从您依赖的其他一些流行库中排除类?标准库中也有一些相当复杂的类型(例如 java.text.DateFormatorg.w3c.dom.Document)。是的,您现在可能不会暴露它们,但这只是暂时的。

我认为正确的方法是拥有一个明确的白名单,其中包含您想要作为 API 合约的一部分公开的所有基类和/或包,并使用它进行过滤。您还可以尝试使用黑名单(例如 java.*javax.*scala.*)来过滤掉“标准库”,它可能会工作一段时间,但我仍然认为这不是一个好主意。

关于java - 使用运行时反射确定不在标准库(Java 或 Scala)中的基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48042963/

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