Использование записей Java или типов @Value для улучшения Integer или LongJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Использование записей Java или типов @Value для улучшения Integer или Long

Сообщение Anonymous »

В некоторых языках ООП стало довольно распространенным извлекать выгоду из лучшего из обоих миров:
  • Лучшее из объектов значащего типа< /strong> (в Java это будет @Value или, в последнее время, просто запись), чтобы избежать «примитивной одержимости» и передавать простые оболочки значений, с дополнительным преимуществом потенциального выполнения некоторой дополнительной проверки в их конструктор.
  • Лучшее из неявных преобразований типов (например, если ваш тип значения является оболочкой вокруг Integer, вы все равно можете передать его туда, где Integer будет пройден)
В настоящее время в C# пункта 2 легко достичь с помощью неявных и подобных методов. Но я не знаю, как это сделать в Java, поскольку нельзя наследовать пользовательские классы от собственных классов Integer или Long.
Пример:

Код: Выделить всё

public record PositiveInteger(Integer value) {
public PositiveInteger{
if (value < 0) {
throw new IllegalArgumentException();
}
}
}

...

public static printInteger(final Integer someInteger) {
print(someInteger.toString());
}

...

public static void main() {
Integer i = 1234;
printInteger(i);

PositiveInteger x = new PositiveInteger(6789);
printInteger(x);  // 

Подробнее здесь: [url]https://stackoverflow.com/questions/79054995/using-java-records-or-value-types-to-enhance-integer-or-long[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»