
Костя
30.06.2018
12:07:44
изначально так и было
class HtmlConverterForDetailedDiscount : BaseConverter<DetailedDiscount>() {
override fun getParser(): HtmlParser<DetailedDiscount> = HtmlParserForDetailedDiscount.newInstance()
}
ошибка тут

Bogdan
30.06.2018
12:08:25

Google

Alexander
30.06.2018
12:08:25
Тогда надо там, где объявляется getParser делать проекцию <out PR>, чтобы компиллятор знал, что могут быть наследники

Костя
30.06.2018
12:08:41
вот

Alexander
30.06.2018
12:08:45
Я и говорю, что в джаве оно тоже работь не будет

Костя
30.06.2018
12:08:49
возможно, это поможет
только как это сделать теперь )
abstract fun getParser(): HtmlParser<out PR> ?

Alexander
30.06.2018
12:09:24
ага

Bogdan
30.06.2018
12:09:34

Костя
30.06.2018
12:09:34
ошибка та же (

Bogdan
30.06.2018
12:10:06
Там ведь тоже дденерик ?

Костя
30.06.2018
12:10:32
а кстати out PR неверно, так получается что мы указываем на наследников DetailedDiscount
а надо указывать наследников парсера
хм

Google

Костя
30.06.2018
12:11:04
ведь PR это DetailedDiscount
а не парсер

Bogdan
30.06.2018
12:11:21
Тогда два дженерика

Костя
30.06.2018
12:11:50
ну тип это объект в который мы парсим
а не сам парсер

Bogdan
30.06.2018
12:12:14
А не

Костя
30.06.2018
12:12:15
ну вот что-то похожее что надо 2 дженерика юзать что ли, для парсера ещё
или я уже устал в субботу работать походу )

Bogdan
30.06.2018
12:12:33
Отдельный
И там должен быть in или без ничего

Alexander
30.06.2018
12:13:24
В общем, я запутался.
statement 1) наследники могут переопределять методы таким образом, чтобы возвращались наследники типов, которые заданы в предках
statement 2) A<B:C> не является наследником A<C>
statement 3) для того, чтобы это все-таки работало, надо писать A<out C> и мучиться с проекциями
В данном случае есть два вариабельных типа: <PR> и Parser<PR> и смотри не перепутай, кутузов

Bogdan
30.06.2018
12:15:05

Костя
30.06.2018
12:15:48

Alexander
30.06.2018
12:15:54
Ну так интерфейс не должен ничего знать о том, что за реализация используется.

Костя
30.06.2018
12:15:55
мне кажется что я уже перемудрил что-то
и так делать не надо. и надо упростить )

Bogdan
30.06.2018
12:16:22

Google

Bogdan
30.06.2018
12:16:48
По сути метод будет возращать this

Костя
30.06.2018
12:17:01
кароч лучше сделаю просто, чтобы работало, и оставлю как задачу со звездочкой ))
эти дженерики (
вечно сложности с ними, всё происходит не так как задумано, нужно найти курс "продвинутые дженерики"

Bogdan
30.06.2018
12:19:02

Костя
30.06.2018
12:20:29
а всего лишь хотел отрефакторить это:
interface HtmlParser<R> {
fun parse(html: String): R
}
class HtmlConverterForDiscountList : Converter<ResponseBody, List<Discount>> {
private val parser = HtmlParserForDiscountList.newInstance()
override fun convert(value: ResponseBody) = parser.parse(value.string())
}
class HtmlConverterForDetailedDiscount : Converter<ResponseBody, DetailedDiscount> {
private val parser = HtmlParserForDetailedDiscount.newInstance()
override fun convert(value: ResponseBody) = parser.parse(value.string())
}

Alexander
30.06.2018
12:21:00
С дженериками начинаются пляски с бубнами когда начинаются проекции. Без них все довольно мило и пушисто

Костя
30.06.2018
12:21:02
ну то есть тут 2 инстанса конвертера в каждом свой парсер от одного интерфейса
ато выглядит мягко говоря всё это неочень

dimiii
30.06.2018
13:01:11
Сорян, не вчитался

Sander
01.07.2018
11:57:53
Всем приет,
у меня вопрос по Kotlin:
class Driver(name: String) : Person(name) {
override var age: Int = 1
override fun getAddress(): String {
return "Test 2"
}
override fun toString(): String {
return "Person(name='$name', age=$age)"
}
}
1. первое что мне не очень понятно class Driver(name: String) : Person(name),
зачем передавать Driver (name) -> в Person(name)? Что это вообще дает, я вдеь просто переопределяю методы "override",
а без
2. как тот же код будет выглядеть в Java, может я пойму больше.

Konstantin
01.07.2018
12:09:53
Classes and Inheritance - Kotlin Programming Language
https://kotlinlang.org/docs/reference/classes.html

Sander
01.07.2018
12:28:35
@MightySeal спасибо

Bogdan
01.07.2018
13:45:23

Sander
01.07.2018
14:13:51
@SchFuntik спасибо, очень помог

Roman
01.07.2018
16:28:40
Подскажите по gradle. Нужно приложение на kotlin + tornadoFX , https://guides.gradle.org/building-java-applications/ данный гайд пойдет ?
https://guides.gradle.org/building-kotlin-jvm-libraries/
по kotlin только это там

Bogdan
01.07.2018
16:30:42

Google

Roman
01.07.2018
16:31:43
а вообще на будущее если понадобится что-то типа hibernate/spring , для kotlin пойдет туториал для java приложений?

Yuri
01.07.2018
16:33:28
да
с поправкой на nullability и final by default

Roman
01.07.2018
16:35:02
в контексте настройки gradle )

Bogdan
01.07.2018
16:35:20
Тут джава или котлин неважно
*почти

Roman
01.07.2018
16:36:03
ок, спасибо

Dibro
01.07.2018
16:36:26

Bogdan
01.07.2018
16:38:24

Dibro
01.07.2018
16:38:50

Bogdan
01.07.2018
16:39:31

Dibro
01.07.2018
16:39:44
человек спросил про разницу конфигурации проекта написанного на джаве и котлине
к самому грейдл это отношения не имеет

Bogdan
01.07.2018
16:43:13
Для меня сборщик - инструмент для сборки проекта, не важно на каком яп

Andrey
01.07.2018
17:46:25
Может кто-нибудь проконсультировать. Попытался подключить startapp sdk, при билдинге выдает ошибку

Anton
01.07.2018
17:47:14
какую ошибку

Andrey
01.07.2018
17:56:06
More than one file was found with OS independent path 'META-INF/kotlin-stdlib.kotlin_module'

Google

Konstantin
01.07.2018
18:21:59

Konstantine
01.07.2018
22:47:58
Кто-нибудь знает, почему у базового класса для чисел нет функций для математический операций? Сложение, вычитание и т.д.
Там только набор приведений.

Mi
01.07.2018
23:57:02

Friedrich
02.07.2018
03:53:45

Bogdan
02.07.2018
03:55:00
А как кстати с ним ? Юзабельный уже ?

Andrey
02.07.2018
05:22:18

Andrew
02.07.2018
06:05:20

Andrey
02.07.2018
06:06:14

Andrew
02.07.2018
06:07:35
Вот так не пробовал, попробую. Спасибо!
Возможны неточности, пишу по памяти с телефона.
Плюс в последних версиях ещё надо игнорировать что-то о kotlin_metadata, но если вы увидите конкретный текст ошибки -- поймёте, как исправить.