Нужно либо делать унылое дерьмо (Groovy), которое почти совместимо с Java и предоставляет сахар, либо что-то ломать и предоставлять интересные и полезные фичи.
Дефолтные реализации для таргета 1.6 хранятся в синтетическом классе (типа SomeInterface$DefaultImpls), а вызовы к ним впиливаются компилятором.
Окей, а пометить такой аннотацией геттер для свойства в интерфейсе можно? Что-то вроде interface Foo { val id: Long @JvmDefault get() = 5L } public class FooImpl implements Foo { }
джава при выходе была крутым языком, но она устарела, так как развитие затормаживает старый код, и вы котлин таще на тот же путь, НОВЫЙ язык, это когда пишешь немного по другому, фичи другие и т.д.
джава при выходе была крутым языком, но она устарела, так как развитие затормаживает старый код, и вы котлин таще на тот же путь, НОВЫЙ язык, это когда пишешь немного по другому, фичи другие и т.д.
Окей, а пометить такой аннотацией геттер для свойства в интерфейсе можно? Что-то вроде interface Foo { val id: Long @JvmDefault get() = 5L } public class FooImpl implements Foo { }
Эту аннотацию уже зарелизили?) Мне кажется, что можно.
@JvmDefault аннотация появилась только в мастере совсем недавно 🙂 Ее можно будет попробовать в живую в 1.2.40. На геттер должно быть можно навесить, проверю.