Проверка типа данных при создании классаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Проверка типа данных при создании класса

Сообщение Anonymous »

Есть следующий код:

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

public interface ISettings{
int value();
}

public record ExampleSet1 (int value) implements ISettings{}
public record ExampleSet2 (int value) implements ISettings{}

public class ExampleClass {
private final ExampleSet1 settingsGlobal;

public ExampleClass(ISettings settingsLocal) {
if (settingsLocal instanceof ExampleSet1 set) {
settingsGlobal = set;
} else {
throw new IllegalArgumentException("Settings type mismatch");
}
}
}
В конструкторе нужно проверить, что settingsLocal соответствует типу settingsGlobal. Хотелось бы вынести проверку в отдельный метод, но не могу заставить тип settingsGlobal проверять его на соответствие.
Есть вариант реализовать проверку с помощью getClass():

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

public class ExampleClass {
private final ExampleSet1 settingsGlobal;

public ExampleClass(ISettings settingsLocal) {
if (!validateSettings(settingsLocal)) {
throw new IllegalArgumentException("Settings type mismatch");
}
settingsGlobal = (ExampleSet1) settingsLocal;
}

private boolean validateSettings(ISettings settingsLocal) {
return settingsLocal.getClass().equals(settingsGlobal.getClass());
}
}
Но я не могу вызвать метод getClass() для неинициализированной переменной.
Как проверить соответствие настроек SettingsGlobal типа?

Подробнее здесь: https://stackoverflow.com/questions/791 ... ng-a-class
Ответить

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

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

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

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

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