Статический список всех объектов класса
Работает ли это с Kotlin, если да, можете ли вы привести пример?
Прямо сейчас в моем интерфейсе нет списка, и я создаю сопутствующий объект в обеих реализациях. Но это как-то неправильно .... Пожалуйста, помогите мне понять это :)
У меня есть четыре способа сделать это прямо сейчас, я покажу два здесь, потому что четвертый потребует более сложного UML. Может быть, это на самом деле то, как вы это делаете, если нет, может быть, у кого-то из вас есть идея;)
Мой код в Котлине подходит к одному:
interface IMyClass {
}
class MyClassOne : IMyClass {
companion object {
var myClassList: ArrayList<IMyClass> = ArrayList()
}
constructor() {
println(myClassList)
}
}
class MyClassTwo : IMyClass {
companion object {
var myClassList: ArrayList<IMyClass> = ArrayList()
}
constructor() {
println(myClassList)
}
}
Мой код в Котлине приближается к двум:
interface IMyClass {
companion object {
var myClassList: ArrayList<IMyClass> = ArrayList()
}
}
class MyClassOne : IMyClass {
constructor() {
println(IMyClass.myClassList)
}
}
class MyClassTwo : IMyClass {
constructor() {
println(IMyClass.myClassList)
}
}
Мой код в Котлине приближается к трем:
interface IMyClass {
var myClassList: ArrayList<IMyClass>
}
class MyClassOne {
companion object : IMyClass{
override var myList: ArrayList<IMyClass>
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
set(value) {}
}
}
class MyClassTwo {
companion object : IMyClass{
override var myList: ArrayList<IMyClass>
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
set(value) {}
}
}
Мой код в Java:
public interface IMyClass {
List<IMyClass> myClassList = new ArrayList<>();
}
public class MyClassOne implements IMyClass {
public MyClassOne() {
System.out.println(myClassList );
}
}
public class MyClassTwo implements IMyClass {
public MyClassTwo() {
System.out.println(myClassList);
}
}
у меня есть несколько способов сделать это, но я ими не доволен ;) @Tom
пока вы не применяете правило, согласно которому у вас должен быть хотя бы один элемент в списке, лол :-)
Kotlin-эквивалент опубликованного вами java-кода на самом деле будет вашим вторым подходом. однако, если вам требуется, чтобы каждая реализация вашего интерфейса обрабатывала инициализацию списка, тогда ваш третий подход будет лучшим выбором.
Лично я решил пойти по моему третьему варианту:
interface IMyClass {
var myClassList: ArrayList<IMyClass>
}
class MyClassOne {
companion object : IMyClass{
override var myList: ArrayList<IMyClass>
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
set(value) {}
}
}
class MyClassTwo {
companion object : IMyClass{
override var myList: ArrayList<IMyClass>
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
set(value) {}
}
}
«в Java это легко для меня xD» ... тогда почему вы не можете сделать то же самое в Котлине? Kotlin не сильно отличается от невозможности преобразовать ваше решение Java в Kotlin.