[当我执行new ByteBuddy().subclass(something)
,然后最终执行make()
和load()
时,生成的动态类是否具有与超类相同的类型级别修饰符?
例如,如果我将package-private类作为子类,那么新生成的类也将是package-private吗?
我问,因为我没看到这个。
如果我先在toTypeDescription()
上调用DynamicType.Builder
,然后在getVisibility()
上调用TypeDescription
,我会看到Visibility.PUBLIC
。
Update:只有在使用any参数调用modifiers()
之前调用它,我才能看到此消息。例如,如果我将toTypeDescription().getVisibility()
after称为modifiers(SyntheticState.SYNTHETIC)
,则报告的可见性为PACKAGE_PRIVATE
。如果我叫toTypeDescription().getVisibility()
before,我叫modifiers(anything)
,则可见性为PUBLIC
。我发现这很令人困惑,并想验证它是否是预期的行为。
我知道我可以使用ByteBuddy.modifiers()
设置所需的任何修饰符。但是由于ByteBuddy经常在配置上使用约定,因此这种情况下的默认设置(PUBLIC
)对我来说是令人惊讶的。
[当我执行新的ByteBuddy()。subclass(something),然后最终make()和load()时,生成的动态类是否具有与超类相同的类型级别修饰符?例如,如果我子类化...
默认情况下,所有生成的类都是公共的,非抽象的。我不希望有任何其他行为,因为您正在生成一个新类,这是定义类的最常用方法。如果重新转换或重新定义,则原始修饰符将保持其原始状态。