在其中一个超类中获取受保护字段的FieldDescription

问题描述 投票:1回答:1

基于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()

这样做有一些方便的方法吗?

byte-buddy
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.