Articles of интерфейса

Какие языки программирования поддерживают реализацию неявного интерфейса путем делегирования?

Котлин может сделать этот очень аккуратный трюк: class Derived(b: Base) : Base by b что делает ваш класс Derived реализованным Base , и все методы Base явно не реализованные в Derived , автоматически делегируются члену b . Я не программирую в Котлине, и потерять 'this' указатель может быть весьма ограниченным, но похоже, что это простая […]

Java Interop: применить @JvmName к getters свойств в интерфейсе или абстрактном классе

Обычно мы можем написать следующий код в котлине: val hasValue : Boolean @JvmName("hasValue") get() = true Это приведет к генерации метода hasValue() вместо getHasValue() для Java interop . Однако в интерфейсе это дает мне ошибку компиляции: val hasValue : Boolean @JvmName("hasValue") get То же самое относится к следующей декларации в абстрактном классе: abstract val hasValue […]

Напиши Скопируемый интерфейс более элегантный, чем в Java

Я пытаюсь написать интерфейс, который классы могут реализовать, чтобы сделать их «скопированными», (тип) безопасными Clonable. В Java я бы сделал что-то подобное, используя рекурсивные дженерики: public interface Copyable<C extends Copyable<C>> { C copy(); } public class Example implements Copyable<Example> { … @Override public Example copy() { return new Example(this); //invoke copy constructor } } Очевидно, […]

Почему Kotlin Array <T> не реализует Iterable <T>

Почему класс Array<T> в Kotlin реализует Iterable<T> ? Быстрый просмотр документации показывает, что у нее уже есть метод iterator() .