Это невозможно.
Вам нужно написать свою собственную аннотацию с @Retention(RetentionPolicy.RUNTIME)
и написать какой-нибудь инструмент, который бы постоянно проверял параметр через Reflection.
Это невозможно для параметров, и также нежелательно постоянно проверять каждый вызов этого метода в каждом экземпляре вашего класса.
Вместо того, чтобы пытаться решить эту проблему с помощью аннотации, вы можете реализовать некоторый служебный класс, подобный Objects
:
public final class Strings {
/**
* Utility classes should not be instantiated.
*/
private Strings() {}
public static void requireWhiteSpace(String value) {
if (value == null || value.indexOf(" ") != -1) {
throw new IllegalArgumentException("Value should contain a white space character!")
}
}
}
, а затем используйте его так:
public void setKey(String key) {
Strings.requireWhiteSpace(key);
this.key = key;
}