Articles of видимость

Как передать контекст Неявно для конструкторов в Котлине

Я пытаюсь создать конструкцию экземпляров класса в зависимости от области, в которой они определены, без использования явных параметров. Это часть порта от Python до Kotlin, но основная идея будет примерно такой: var d = MyClass() use_scope(contextAForScope) { var a = MyClass() use_scope(contextBForScope) { var b=MyClass() } } В этом примере d конструктор будет использовать контекст […]

Экземпляр экземпляра Kotlin имеет значение null при доступе к Spring-классу Spring

У меня есть класс обслуживания, который проксируется Spring, например: @Service @Transactional open class MyService { … } Если я удалю open модификатор, Spring жалуется, что ему необходимо проксировать класс, чтобы применить @Transactional аннотации @Transactional . Однако это вызывает проблемы при вызове функции в прокси-службе, которая пытается получить доступ к переменной: @Service @Transactional open class MyService […]

Kotlin: почему параметры конструктора имеют «внутреннюю» видимость по умолчанию?

Если у нас есть класс: class Customer(val customerName: String) { } Его параметр customerName для getCustomerName() доступен через getCustomerName() (потому что это тоже свойство). Если мы хотим ограничить доступ к этому свойству, мы должны объявить его private . Так как во многих случаях из Java-мира (и если класс не предназначен для класса данных) поля, которые […]

Способы запутывания доступа к привилегированным частным, но на самом деле публичным членам класса для использования их в встроенных методах

Каковы некоторые способы обфускации или ограничения доступа к открытым членам класса? Мотивация заключается в том, что я хотел бы иметь возможность inline метод, но ему нужен доступ к другим членам класса, что требует их public , однако я бы предпочел, чтобы эти члены были чем угодно, но public , но поскольку они должны быть public […]

Частный конструктор в Котлине

В Java можно скрыть главный конструктор класса, сделав его private а затем получив доступ к нему через public static метод внутри этого класса: public final class Foo { /* Public static method */ public static final Foo constructorA() { // do stuff return new Foo(someData); } private final Data someData; /* Main constructor */ private […]

Объем модификатора внутренней видимости в Котлине

У меня проблема с пониманием модификатора внутреннего доступа. В моих примерах я не мог создать ситуацию, когда он ведет себя иначе, чем общественность. Даже если я создаю банки, я могу получить доступ к внутренним функциям в банке из-за пределов банки (из другого пакета, не связанного с тем, который используется в банке). В документации используется термин […]

альтернатива, защищенная пакетом в котлин

В java у нас есть защищенный от пакета (по умолчанию) модификатор для классов, который позволяет иметь много классов в одном пакете, но выставлять только несколько и поддерживать инкапсулированную логику. С kotlin это, похоже, не так, если я хочу иметь несколько других классов, которые должны быть видны друг другу, но не в дальнейшем я должен использовать […]