我正在从Scala类型生成GraphQL定义,但在运行时反射API中找不到任何内容,只能获取“用户定义”的基类,即不属于Scala或Java标准库的基类。
截至目前,我只有一组我知道的弹出窗口,例如Any
,Object
和另外8人。这些只是在列表中,因为它们是我在编写单元测试时出现的。理想情况下,我不想要一个手动列表,因为添加新类型似乎很脆弱,它可能会破坏。
我不知道这是否可以用宏,但这不是一个选项。在尝试使用宏之后,它周围有太多的bug,包括它导致编译器崩溃,并且该bug的修复假设是在最新的zinc
但是我不能使用它,因为我使用Gradle只能使用由于0.x.x
系列中名称空间的变化,1.x
锌系列。
所有这一切,是否有人知道是否有一种方法可以确定不属于标准库的类型的基类?
我不认为这样的特征存在甚至应该存在。特别是我不认为术语“标准库”在您的问题背景下的确定得很好。我的意思是为什么它应该从标准库中排除类,而不是从你依赖的其他一些流行的库中排除?标准库中也有一些非常复杂的类型(例如java.text.DateFormat
或org.w3c.dom.Document
)。是的,你现在可能不会暴露它们,但这只是暂时的。
我认为正确的方法是拥有一个明确的所有基类和/或包的白名单,您希望将其作为API合同的一部分公开,并将其用于过滤。您也可以尝试使用黑名单(如java.*
,javax.*
,scala.*
)来过滤掉“标准库”,它可能会工作一段时间,但我仍然认为这不是一个好主意。