Код: Выделить всё
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");
}
}
}
Есть вариант реализовать проверку с помощью 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());
}
}
Как проверить соответствие настроек SettingsGlobal типа?
Подробнее здесь: https://stackoverflow.com/questions/791 ... ng-a-class
Мобильная версия