Здравствуйте нужна ваша помощь нужно Реализовать класс Student, полями которого являются:
private String name;
private Optional<Address> address;
Пропишите два конструктора (первый от имени и адреса, второй только от имени) и геттеры для полей.
Реализуйте класс Address, полями которого являются:
private String city;
private String region;
Пропишите конструктор и геттеры.
В классе Main создайте метод printStudentInfo(Student student), который выводит информацию о студенте. Если адрес студента не указан, то должно выводиться только имя. Создайте несколько студентов, используя оба конструктора, и протестируйте этот метод.
2) Создайте список произвольных слов. С помощью StreamAPI и метода reduce объедините слова в предложение. Выведите первоначальный список и полученное предложение в консоль.
Другие языки программирования и технологии
Программирование на джава
Optional хранить в полях классов - плохая практика. Хранить нужно саму ссылку на объект, а в Optional и обратно преобразовывать в методах, если нужно. Если ты хранишь в объекте монаду, то придётся дублировать и все её методы доступа (map, flatMap, filter, orElse и т.д.). Мне-то не жалко написать по условию, но если что, я предупреждал.
Геттеры и стандартные конструкторы руками пишут только люди, застрявшие в нулевых годах или живущие втиранием очков заказчику многословным кодом. Нормальные разработчики подключают lombok, который всю кухню генерит по аннотации.
Например, файл Student.java будет выглядеть так:
Аннотация lombok.Value автоматом сделает все поля приватными и финальными, сгенерирует конструктор на и геттеры на все поля, т.е. класс будет иметь семантику значения. Поскольку в условии не сказано, что нужны сеттеры, это будет в самый раз.
Если всё же понадобится менять значения полей, замени аннотацию на lombok.Data.
Основной класс Main.java:
Всё это должно лежать в папке с названием lab. Имя пакета и папки подправь, как тебе нужно. И населённые пункты с именами студентов сам придумай, я не люблю фантазировать.
А вторая задача вообще никак не связана с первой. Так что - публикуй отдельным вопросом.
Геттеры и стандартные конструкторы руками пишут только люди, застрявшие в нулевых годах или живущие втиранием очков заказчику многословным кодом. Нормальные разработчики подключают lombok, который всю кухню генерит по аннотации.
Например, файл Student.java будет выглядеть так:
package lab;
import lombok.Value;
import java.util.Optional;
@Value
public class Student {
String name;
Optional address;
public Student(String n, Address a) {
this.name = n;
this.address = Optional.ofNullable(a);
}
public Student(String n) {
this(n, null);
}
}
А файл Address.java - так: package lab;
import lombok.value;
@Value
class Address {
String city;
String region;
}
Аннотация lombok.Value автоматом сделает все поля приватными и финальными, сгенерирует конструктор на и геттеры на все поля, т.е. класс будет иметь семантику значения. Поскольку в условии не сказано, что нужны сеттеры, это будет в самый раз.
Если всё же понадобится менять значения полей, замени аннотацию на lombok.Data.
Основной класс Main.java:
package lab;
import lombok.val;
public class Main {
public static void Main(String[] args) {
val a = new Address("xxx", "rrr");
val s1 = new Student("zzz", a);
val s2 = new Student("www");
printStudentInfo(s1);
printStudentInfo(s2);
}
private static printStudentInfo(Student s) {
System.out.println(
s.getName() + ": " +
s.getAddress()
.map(a -> a.getCity() + " из " + a.getRegion())
.orElse("БОМЖ")
);
}
}
Всё это должно лежать в папке с названием lab. Имя пакета и папки подправь, как тебе нужно. И населённые пункты с именами студентов сам придумай, я не люблю фантазировать.
А вторая задача вообще никак не связана с первой. Так что - публикуй отдельным вопросом.
Похожие вопросы
- Чем отличаются С# от Джава? (у обоих синтаксис как у си, оба поддерживаю ООП и веб программирование)
- Правильно язык Ява или Джава?
- Джава или ПХП ???
- Как думаете, глупо ли знать и джаву и си шарп? Или надо определить свой путь, и выбрать только одно из двух?
- Как переучиться с питона на джаву?
- Конец объектно-ориентированному программированию? Переходим от “черных” ящиков к ”белым” и ”прозрачным” ящикам?
- А какие языки программирования изучали в 80х и на чём вы их изучали?
- ОК. Куда, мать его, поступать-то? Или как я стал ненавидеть программирование
- Основы для программирования
- Вопрос для тех, кто уже опытный и профессиональный специалист в сфере программирования, web-программирования, дизайн!..