Использование записей 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]

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