获取超类之一中受保护字段的FieldDescription

时间:2019-04-15 15:45:28

标签: byte-buddy

基于TypeDefinition(例如,检测类型),我想快速找到受保护变量的FieldDescription。我知道变量在其中一个超类中,但是我不确切知道在哪个超类中。这是一个简化的示例:

class C1 { protected int id; }

class C2 extends C1 {}

基于typeDefinitionC1 = TypeDescription.ForLoadedType.of(C1.class),我可以通过执行以下操作找到该字段:

typeDefinitionC1.getDeclaredFields().filter(named("id")).getOnly()

但是使用C2的类型定义将不起作用,因为该字段未在C2中声明。我编写了一个小函数来遍历所有超类以查找字段,但是我希望ByteBuddy允许我做类似的事情:

typeDefinitionC2.getFields().filter(named("id").and(isProtected())).getOnly()

有一些方便的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用new FieldLocator.ForExactType(typeDefinitionC1).locate(named("id"))

Byte Buddy不会将位置烘焙到描述API中,就像反射API一样,因为位置通常取决于查找站点和用例。