Size: a a a

2020 September 30

ch

central hardware in learn.java
Artur Magomedov
public List<String> getUserDetail(List<User> users, int age){
   // solution
}
по следующим критериям:
• filter by User.age >= provided age
• map to String like firstName + lastName
• order by alphabet
• return List of String
Стримами? Или как угодно?
источник

AM

Artur Magomedov in learn.java
Стримами
источник

д

даня in learn.java
Artur Magomedov
public List<String> getUserDetail(List<User> users, int age){
   // solution
}
по следующим критериям:
• filter by User.age >= provided age
• map to String like firstName + lastName
• order by alphabet
• return List of String
тут в задании явная подсказка есть
пользуйся нетерминальными операциями, которые указаны в критериях(они так же называются, как написано, если ничего не знаешь про них - прочти)
источник

К

Кирилл in learn.java
Vadim
то есть то что в идее нельзя юзать из терминала, а если они разных версий окажутся
Так мавен уже интегрирован в идею. Нужно только path прописать к нему в винде, и будешь пользоваться им и из стандартной cmd и из идеи
источник

AM

Artur Magomedov in learn.java
даня
тут в задании явная подсказка есть
пользуйся нетерминальными операциями, которые указаны в критериях(они так же называются, как написано, если ничего не знаешь про них - прочти)
Да, простенькое все. Нюанс лишь в том, что писать надо не в ide
источник

К

Кирилл in learn.java
Alexey Stepanov
Привет. Подскажите, пожалуйста, как спроектировать иерархию.
Задача такая: любой Animal может eat(). Подтипы могут употреблять конкретные типы еды (хищник - животное, травоядное - траву и т.д.).
Как избежать несоответствия типов?

abstract Animal
...
+ eat (<param> - ?)

Predator extends Animal
+ eat (Animal food)

Herbivore extends Animal
+ eat (Grass food)
Не совсем вопрос понятен. Но вообще, все они - животные. Делятся на 2 класса. Хищники и травоядные, все они умеют есть, но травоядные дополнительно являются едой для хищников, хищники могут только есть.
источник

К

Кирилл in learn.java
Каждый из них при приведении к типу животного, будет истиной, хищники будут только к хищникам приводиться, травоядные, только к травоядным. Это сужение
источник

DS

Dmitriy Shilnikov in learn.java
Alexey Stepanov
Привет. Подскажите, пожалуйста, как спроектировать иерархию.
Задача такая: любой Animal может eat(). Подтипы могут употреблять конкретные типы еды (хищник - животное, травоядное - траву и т.д.).
Как избежать несоответствия типов?

abstract Animal
...
+ eat (<param> - ?)

Predator extends Animal
+ eat (Animal food)

Herbivore extends Animal
+ eat (Grass food)
Если бы так можно было просто сделать, то поведение объекта бы отличалось от того, как объявлена переменная. Т.е. в Animal a = new Herbovire() можно было бы в eat передать Animal в качестве еды и это бы скомпилировалось.
источник

AS

Alexey Stepanov in learn.java
Dmitriy Shilnikov
Если бы так можно было просто сделать, то поведение объекта бы отличалось от того, как объявлена переменная. Т.е. в Animal a = new Herbovire() можно было бы в eat передать Animal в качестве еды и это бы скомпилировалось.
Ну в этом и проблема насколько я понял
Тот факт, что у подклассов сужаются типы - говорит о неправильном построении иерархии, как такую задачу можно переиграть?
источник

DS

Dmitriy Shilnikov in learn.java
Alexey Stepanov
Ну в этом и проблема насколько я понял
Тот факт, что у подклассов сужаются типы - говорит о неправильном построении иерархии, как такую задачу можно переиграть?
https://pastebin.com/2PsTtVN2
Ну ты можешь как-нибудь так извратиться. Но, как мне кажется, это очень плохая идея.
Скорее-всего, тебе просто не надо метод eat объявлять в базовом классе вообще.
источник

DS

Dmitriy Shilnikov in learn.java
А то потом выяснится, что какие-то жывотные у тебя фотосинтезом питаются )
источник

AS

Alexey Stepanov in learn.java
Нужно обозначить, что любое животное должно уметь eat(), нет других способов, кроме переопределения метода в подклассах?
источник

DS

Dmitriy Shilnikov in learn.java
Alexey Stepanov
Нужно обозначить, что любое животное должно уметь eat(), нет других способов, кроме переопределения метода в подклассах?
Ну если прямо нужно это обозначить, то я бы сделал интерфейс типа Feedable с дженериком.
источник

DS

Dmitriy Shilnikov in learn.java
Кому надо пусть имплементит
источник

DS

Dmitriy Shilnikov in learn.java
Но там начнётся фигня, если надо будет указать, например, несколько разных видов еды.
источник

ch

central hardware in learn.java
Alexey Stepanov
Нужно обозначить, что любое животное должно уметь eat(), нет других способов, кроме переопределения метода в подклассах?
интерфейсы в любом случае нужно будет использовать а дальше возможны варианты
источник

DS

Dmitriy Shilnikov in learn.java
Можно сделать метод tryEat(Object food) throws UnsupportedFoodException )
источник

DS

Dmitriy Shilnikov in learn.java
Dmitriy Shilnikov
Можно сделать метод tryEat(Object food) throws UnsupportedFoodException )
Это шутка, если что )
источник

AS

Alexey Stepanov in learn.java
А это не является нарушением интерфейса, тк мы говорим что принимаем Object, а на деле работает только с supported?)
источник

AS

Alexey Stepanov in learn.java
Шутка шуткой, а преподаватель примерно это и дал тоже
источник