我认为这在Java中是不可能的,因为注释及其参数在编译时被解析.我有一个如下界面,
public interface FieldValues {
String[] FIELD1 = new String[]{"value1", "value2"};
}
Run Code Online (Sandbox Code Playgroud)
和另一个班级,
@SomeAnnotation(locations = {"value1", "value2"})
public class MyClass {
....
}
Run Code Online (Sandbox Code Playgroud)
我用注释标记了很多类,我想知道我是否可以避免在每个注释中指定字符串而我更愿意使用
@SomeAnnotation(locations = FieldValues.FIELD1)
public class MyClass {
....
}
Run Code Online (Sandbox Code Playgroud)
但是这会产生编译错误,例如注释值应该是数组初始化器等.有人知道如何使用String常量或String []常量来为注释提供值吗?
注释可以具有复杂的返回类型,例如HashMap.
我正在寻找类似的东西:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface column {
public HashMap<String, String> table();
}
Run Code Online (Sandbox Code Playgroud)
所以我可以有一个常量注释(伪代码):
@column({table=(dbName, tableName), table=(dbName, tableName2)})
public static final String USER_ID = "userid";
Run Code Online (Sandbox Code Playgroud)
如果Annotation不允许你有复杂的返回类型,那么对于这种情况有什么好的做法吗?
我想创建一个自定义注释(使用Java),它将接受其他注释作为参数,如:
public @interface ExclusiveOr {
Annotation[] value();
}
Run Code Online (Sandbox Code Playgroud)
但这会导致编译器错误"注释成员的无效类型".
对象[]也不起作用.
有办法做我想要的吗?
刚刚遇到一个错误,问题是我遇到的:
@Column(name = "ACTIVE")
@NotNull
private boolean active;
Run Code Online (Sandbox Code Playgroud)
在我的代码中,我忘记设置该值,但它仍然“有效”,因为布尔值的默认值是 false。我现在已将其更改为Boolean,如果未主动设置,则验证失败。
为什么我可以对@NotNull显然不能的事情施加限制null?这是重构的原因,所以如果我像现在所做的那样更改为布尔值,我仍然保留预期的约束吗?
是否有任何好的想法可以解决这些问题(除了为此目的进行更多测试)?或者我应该避免使用基元?
我是春季靴子和学习的新手@RequestParam()
我知道我们可以在String中给出defaultValue,但是当我尝试将默认值设置为Integer时,它会向我显示错误.
@RequestMapping("/returnVeriable")
public int getVeriable(@RequestParam(required=true,defaultValue=1/*error here*/) int veri){
return veri;
}
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
我想将方法传递给注释.这样的事情可能吗?
@MyAnnotation(method = MyClass::myMethod)
private String myVariable;
Run Code Online (Sandbox Code Playgroud) 我可以调用一个在注释中返回字符串的方法吗?
如果是这样,请指导我如何实现这一目标?
我尝试过这样,但这对我不起作用。
@Description(value = Resource.getWord("key"))
Run Code Online (Sandbox Code Playgroud) java ×7
annotations ×5
arrays ×1
collections ×1
constraints ×1
java-8 ×1
notnull ×1
spring-boot ×1