Когда я делаю new ByteBuddy().subclass(something)
, а затем, в конце концов, make()
и load()
, получаются ли в результате у класса Dynami c те же самые модификаторы уровня типа, что и у суперкласса?
Например, если Я подкласс класса закрытого пакета, будет ли вновь созданный класс также закрытым для пакета?
Я спрашиваю, потому что я не вижу этого.
Если я вызову toTypeDescription()
на DynamicType.Builder
и затем getVisibility()
на этом TypeDescription
, я вижу Visibility.PUBLIC
.
Обновление : я вижу это, только если я вызываю его до того, как позвоню на modifiers()
с любым аргументом. Например, если я позвоню toTypeDescription().getVisibility()
после Я позвонил modifiers(SyntheticState.SYNTHETIC)
, тогда сообщается о видимости PACKAGE_PRIVATE
. Если я позвоню toTypeDescription().getVisibility()
до Я позвонил modifiers(anything)
, тогда видимость будет PUBLIC
. Я обнаружил, что это сбивает с толку, и хотел убедиться, что это предполагаемое поведение.
Я понимаю, что могу использовать ByteBuddy.modifiers()
для установки любых модификаторов, которые я хочу. Но значения по умолчанию в этом случае (PUBLIC
) меня удивили, учитывая, что ByteBuddy часто использует соглашение по конфигурации.