Я хотел бы выполнить проверку безопасности для моего getClass().getField(...).set(...)
, где значение, которое я задаю, должно соответствовать типу этого поля (int x = 1 должно позволять устанавливать только целые числа). Проблема в том, что мне трудно найти способы сравнить их. В настоящее время это код:
int foo = 14;
Field field = getClass().getDeclaredField("foo");
Object source = this;
// make the field accessible...
public void safeSet(Object newValue) throws IllegalAccessException {
// compare the field.getType() to the newValue type
field.set(source, newValue);
}
Я много чего перепробовал и довольно долго искал в интернете, но не могу найти ответ, который фокусируется исключительно на его использовании. Я пробовал такие вещи, как field.getType().getClass().equals(newValue.getClass())
, field.getType().equals(newValue)
и другие, и они не работают. Как я могу разумно сравнить примитивное field.getType () со значением Object, переданным в, или, как бы я в этом случае сравнил int
с Integer
?