https://kotlinlang.org logo
Title
l

lewik

04/15/2020, 1:20 PM
class CombinedNetworkEmulatorTest(
    private val structureIndexAware: StructureIndexAware = StructureIndexAwareImpl(StructureIndexes.lfs_msres_oegJsonGz),
    private val l10nAware: L10nAware = L10nAwareImpl(L10nRu(), structureIndexAware)
) :
    StructureIndexAware by structureIndexAware,
    L10nAware by l10nAware {
....
У меня junit+kotiln test не дают запускать этот тест "must declare a single constructor" Откуда еще один конструктор взялся? И как собственно выйти из положения?
Выпутался вот так:
private val structureIndexAware: StructureIndexAware = StructureIndexAwareImpl(StructureIndexes.lfs_msres_oegJsonGz)
private val l10nAware: L10nAware = L10nAwareImpl(L10nRu(), structureIndexAware)

class CombinedNetworkEmulatorTest :
    StructureIndexAware by structureIndexAware,
    L10nAware by l10nAware {
a

altavir

04/15/2020, 4:51 PM
А чего в тестовом классе конструктор вообще делает?
b

beholder

04/16/2020, 7:37 AM
@JvmOverloads
добавить
l

lewik

04/17/2020, 2:49 PM
@altavir Чтобы делегатов сделать. А делегатам нужны общие объекты. В каждом классе писать не удобно
@beholder
class OegJsonTest @JvmOverloads constructor(
    private val structureIndexAware: StructureIndexAware = StructureIndexAwareImpl(StructureIndexes.lfs_msres_oegJsonGz)
) : StructureIndexAware by structureIndexAware {
Не помогло
Помоему @JvmOverloads как раз добавляет методов... не?
g

gildor

04/19/2020, 2:36 PM
JvmOverloads добавляет конструкторы, в данном случае дефолтный в том числе, но судя по всему только один дефолтный можно
l

lewik

04/19/2020, 2:37 PM
@gildor Что можете предложить в этом случае?
g

gildor

04/20/2020, 12:10 AM
Избавиться от конструктора? Я не понимаю зачем он нужен, если нужен делегат, почему просто не перенести создание объекта куда делегировать в делегат, зачем нужен конструктор
1