【问题标题】:Creating Custom Annotation in Java to force UPPER or lower Case在 Java 中创建自定义注释以强制大写或小写
【发布时间】:2012-08-30 11:21:55
【问题描述】:

通过强制 pojo 字段的大写或小写,感谢任何帮助在 JAVA 中创建自定义注释。喜欢得到类似下面的东西

// CaseMode enum would be
public enum CaseMode {
   UPPER, LOWER;
}

@Target({ ElementType.FIELD, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface Case {
    // NEED HELP HERE
}

public class Customer {
    @Case(value=CaseMode.UPPER)
    private String fName; 
    { set; get; }
}

默认情况下,客户对象中的 setter 方法应根据注释强制数据以大写或小写形式存储。感谢您提供任何帮助。

提前致谢

【问题讨论】:

    标签: java


    【解决方案1】:

    注解是Java中的被动元素;他们不能有任何行为。正如@maba 所说,您不能在注释声明中编写任何代码。

    为了获得与您尝试做的类似的事情,您需要能够检测注释并执行一些工作的东西。你有几个选择。

    编写自定义的编译时注释处理器允许您在编译之前对源代码进行预处理。

    面向方面的编程既可以在编译时工作,也可以在运行时工作。它相对容易理解,但需要与您的项目一起设置一些工具,具体取决于您的部署位置。

    动态代理也很简单,但您需要更改代码访问对象的方式,可能是通过声明一些接口并使用这些接口而不是类等。

    代码生成库属于复杂的一面,提供了很大的灵活性(例如,它们是 Hibernate 如何使用您的 POJO 对象发挥其魔力)。

    【讨论】:

    【解决方案2】:

    您的声明// NEED HELP HERE应符合以下内容:

    @Target({ElementType.FIELD, ElementType.METHOD})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Case {
        CaseMode value();
    }
    

    如果你认为你可以有一些代码,那你就错了。

    【讨论】:

    • 谢谢,知道了。您能否建议如何获得用于 POJO 成员数据转换的自定义转换器。提前致谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 2017-03-01
    • 2019-02-08
    • 2010-10-03
    相关资源
    最近更新 更多