我正在使用JDK6的注释处理API开发一个小型代码生成器,并且一直在尝试获取类中字段的实际通用类型。更清楚地说,假设我有这样一个类:@MyAnnotationpublicclassUser{privateStringid;privateStringusername;privateStringpassword;privateSetroles=newHashSet();privateUserProfileprofile;}这是我的注解处理器类:@SupportedAnnotationTypes({"xxx.MyAnnotation"})@SupportedSourceVersion(Sou
我最近开始创建我自己的注解并进行TDD/BDD,我想对我的注解进行单元测试以便为它们创建一个清晰的规范。然而,由于注释基本上只是花哨的接口(interface),据我所知不能真正直接实例化,是否有任何方法可以对注释进行单元测试而不是反射? 最佳答案 我通常不会为此编写测试,但您可以简单地创建一组使用和滥用注释的测试类,以测试它是否正在存储其成员值,是否具有正确的默认值等。这当然只适用于在正确目标上指定的运行时注释。根据我的经验,注释本身很少有趣到足以保证单元测试——通常是使用它们的代码需要测试。但是我不是来自100%代码覆盖率的思想
我正在使用Java6、Tomcat6和Metro。我使用WebService和WebMethod注释来公开我的Web服务。我想获取有关该请求的信息。我尝试了以下代码,但wsCtxt始终为空。我必须采取什么步骤才能不为WebServiceContext获取null。换句话说:我如何执行以下行来为wsCtxt获取非空值?MessageContextmsgCtxt=wsCtxt.getMessageContext();@WebServicepublicclassMyService{@ResourceWebServiceContextwsCtxt;@WebMethodpublicvoidmyW
关于@ConstructorPropertiesDocumentation说“构造函数上的注释,显示该构造函数的参数如何对应于构造对象的getter方法”。它给出了一个模棱两可的例子,因为变量名与参数相同。我真的不明白为什么@ConstructorProperties({"x","y"})引用gettersgetX()和getY()。x和y的大小写与注释不一致。所以为了阐明这段代码中构造函数的注解应该是什么:publicclassPoint{publicPoint(inta,intb){this.c=a;this.d=b;}publicintgetCc(){returnc;}publi
我有一个关于JAXB的简单问题。这是示例代码://setterthathasinputJAXBElementb.setBIC(JAXBElementvalue);如何初始化使用来自其他对象的字符串的输入元素? 最佳答案 您可以直接创建JAXBElement的实例,或者如果您从XML模式生成Java模型,则对生成的ObjectFactory类使用方便的方法。packageorg.example.schema;importjavax.xml.bind.*;importjavax.xml.namespace.QName;publiccla
我在bean中有一个变量名。我想添加@Pattern验证以仅接受字母数字。目前,我有这个。@NotNull@Pattern(regexp="{A-Za-z0-9}*")Stringname;但错误是无效的正则表达式。我尝试了[A-Za-z0-9]。但这也不起作用。虽然没有错误。它将任何有效输入显示为失败。 最佳答案 你试试这个模式:^[A-Za-z0-9]*$或^[A-Za-z0-9]+$以避免出现空结果。如果要检查字符串是否仅包含特定字符,则必须添加anchor(^用于字符串的开头,$用于字符串的结尾)确保您的模式匹配整个字符串。
我正在使用publicclassUserTaskextendsBaseObjectimplementsSerializable{@ElementCollection(targetClass=java.lang.String.class)privateListuserTaskMessage=newArrayList();....Hibernate生成表,名称为usertask_usertaskmessage。如何设置我的名字?例如my_table_example 最佳答案 使用注解@CollectionTable(name="your
在java-8中出现了新的注解@sun.misc.Contended。有几篇写得很好的文章,解释了它的作用和使用方法:Whatis@ContendedandFalseSharing?@Contended(a.k.a.JEP142)Java@Contendedannotationtohelpreducefalsesharing但是哪里都没有说明,这个注解的value是什么?我的意思是,例如在java.lang.Thread中,它的用法如下:@sun.misc.Contended("tlr")intthreadLocalRandomProbe;这个"tlr"值是多少?它有什么影响?如果此v
我想知道是否有任何关于重复调用(在Java中)Method.getAnnotation(Class)和Field.getAnnotation(Class)的性能的比较/研究方法,而不是存储(在程序启动时)具有类元数据信息的预计算Map并稍后重复查询。哪一个可以提供最佳的运行时性能?这个性能在Java5、6和7下是否相同? 最佳答案 Map应该是更可取的方法。主要问题不仅与缓存有关。还能改善多线程争用。在Method.getAnnotation()中,它调用同步私有(private)方法declaredAnnotations()。同步
对于大量使用Java注解的项目,注解顺序有什么建议吗?从而统一团队内的代码风格。 最佳答案 我要说没有。在这一点上我可能会被证明是错误的。我的理由是,除了嵌入到Java中的项目和嵌入到我们的IDE中的项目(特别是Eclipse,但我相信其他人也有)之外,还有数百个项目具有注释。因此,鉴于所有这些库都可能争夺“谁在上面”,我怀疑他们是否会就标准达成一致。我会鼓励您的团队坐下来决定什么对你们最有利。我会考虑的因素:哪些注释最重要?它们应该靠近顶部。哪些注释最有可能指示潜在的错误?它们应该靠近顶部。哪些注释可能出现在类中的每个方法上?它们