当我在ByteBuddy中子类化时,我的新动态类是否使用与超类相同的类级修饰符?

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

[当我执行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(s​​omething),然后最终make()和load()时,生成的动态类是否具有与超类相同的类型级别修饰符?例如,如果我子类化...

byte-buddy
1个回答
0
投票

默认情况下,所有生成的类都是公共的,非抽象的。我不希望有任何其他行为,因为您正在生成一个新类,这是定义类的最常用方法。如果重新转换或重新定义,则原始修饰符将保持其原始状态。

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