Questions tagged «annotations»

在编程中,注释用于将信息添加到类型系统无法表达的代码元素中。

23
将Mockito模拟注入Spring bean
我想将Mockito模拟对象注入到Spring(3+)bean中,以进行JUnit的单元测试。我的bean依赖项当前是通过使用@Autowired在私有成员字段上注释来。 我已经考虑过使用 ReflectionTestUtils.setField但是我希望注入的bean实例实际上是一个代理,因此没有声明目标类的私有成员字段。我不希望为依赖项创建一个公共的setter,因为我将纯粹出于测试目的而修改接口。 我遵循了Spring社区提供的一些建议,但是未创建该模拟程序,并且自动装配失败: <bean id="dao" class="org.mockito.Mockito" factory-method="mock"> <constructor-arg value="com.package.Dao" /> </bean> 我当前遇到的错误如下: ... Caused by: org...NoSuchBeanDefinitionException: No matching bean of type [com.package.Dao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: { @org...Autowired(required=true), @org...Qualifier(value=dao) } at org...DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(D...y.java:901) at org...DefaultListableBeanFactory.doResolveDependency(D...y.java:770) 如果将constructor-arg值设置为无效值,则启动应用程序上下文时不会发生错误。


13
在运行时扫描Java批注[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 3个月前关闭。 改善这个问题 在整个类路径中搜索带注释的类的最佳方法是什么? 我正在做一个库,我想允许用户注释他们的类,所以当Web应用程序启动时,我需要扫描整个类路径以查找某些注释。 您知道执行此操作的库或Java工具吗? 编辑:我正在考虑类似Java EE 5 Web服务或EJB的新功能。您使用@WebService或注释类,@EJB系统在加载时会找到这些类,因此可以远程访问它们。


4
Java注释成员可以使用哪些类型?
今天,我想按照本文档创建我的第一个注释界面,但出现此编译器错误 Invalid type for annotation member": public @interface MyAnnotation { Object myParameter; ^^^^^^ } 显然Object不能用作注释成员的类型。不幸的是,我找不到有关可以普遍使用的类型的任何信息。 我通过反复试验发现了这一点: String →有效 int →有效 Integer →无效(令人惊讶地) String[] →有效(令人惊讶) Object →无效 也许有人可以阐明实际允许的类型以及原因。
238 java  annotations 

8
为什么无法在Java中扩展注释?
我不明白为什么Java注释就像Java类一样没有继承。我认为这将非常有用。 例如:我想知道给定的注释是否为验证者。通过继承,我可以自反地浏览超类,以了解此注释是否扩展了ValidatorAnnotation。否则,我该如何实现? 那么,谁能给我这个设计决定的理由?


8
Spring @Transactional属性可以在私有方法上工作吗?
如果我在Spring bean的私有方法上有一个@Transactional -annotation,那么注释是否有效果? 如果@Transactional注释在公共方法上,则它可以工作并打开一个事务。 public class Bean { public void doStuff() { doPrivateStuff(); } @Transactional private void doPrivateStuff() { } } ... Bean bean = (Bean)appContext.getBean("bean"); bean.doStuff();



12
Python3的“函数注释”有什么好的用处
功能注释:PEP-3107 我碰到了一段代码,展示了Python3的功能注释。这个概念很简单,但是我想不起来为什么要用Python3来实现它们或对其有很好的用途。也许可以启发我吗? 这个怎么运作: def foo(a: 'x', b: 5 + 6, c: list) -> max(2, 9): ... function body ... 在参数后冒号后面的所有内容均为“注释”,在后面的信息->为函数返回值的注释。 foo.func_annotations将返回一个字典: {'a': 'x', 'b': 11, 'c': list, 'return': 9} 拥有此功能有什么意义?

2
组合多个@SuppressWarnings批注-Eclipse Indigo
因此,问题在于能够组合多个警告抑制,以便每个项目都不需要它自己的@SuppressWarnings注释。 因此,例如: public class Example public Example() { GO go = new GO(); // unused .... List<String> list = ( List<String> ) go.getList(); // unchecked } ... // getters/setters/other methods } 现在,@SuppressWarnings我不想在班级针对这两个警告设置两个警告,而是这样: @SuppressWarnings( "unused", "unchecked" ) public class Example public Example() { GO go = new GO(); // unused - …

4
龙目岛如何运作?
我今天遇见了龙目岛。 我很想知道它是如何工作的。 Java极客文章提供了一些线索,但对我来说还不是很清楚: Java 6删除了apt,并使javac能够管理注释,从而简化了流程以获得更简单的单步计算。这是龙目岛采取的道路。 也许在Java 6中,编译过程将是:javac-> apt-> lombok apt进程->读取类文件并使用ASM添加set / get方法? 您能告诉我有关该机制的更多细节吗?
148 java  annotations  lombok 

6
如何通过常量Java为注释提供值
我认为这在Java中可能无法实现,因为注释及其参数在编译时已解决。我有一个如下的界面, public interface FieldValues { String[] FIELD1 = new String[]{"value1", "value2"}; } 和另一类, @SomeAnnotation(locations = {"value1", "value2"}) public class MyClass { .... } 我用注解标记了许多类,我想知道是否可以避免在每个注解中指定字符串,而宁愿使用 @SomeAnnotation(locations = FieldValues.FIELD1) public class MyClass { .... } 但是,这会产生诸如注释值之类的编译错误,该值应该是数组初始化程序等。有人知道我如何使用String常量或String []常量为注释提供值吗?
146 java  arrays  annotations 

9
如何更有效地使用@Nullable和@Nonnull注释?
我可以看到@Nullable和@Nonnull注释可能有助于防止NullPointerExceptions,但它们不会传播太远。 这些注释的有效性在一个间接级别之后会完全下降,因此,如果仅添加一些注释,它们的传播就不会太远。 由于这些注释的执行不正确,因此存在以下危险:假定标有的值@Nonnull不为空,因此不执行空值检查。 以下代码使标记@Nonnull为的参数null不会引起任何投诉。它NullPointerException在运行时抛出一个。 public class Clazz { public static void main(String[] args){ Clazz clazz = new Clazz(); // this line raises a complaint with the IDE (IntelliJ 11) clazz.directPathToA(null); // this line does not clazz.indirectPathToA(null); } public void indirectPathToA(Integer y){ directPathToA(y); } public void directPathToA(@Nonnull Integer x){ x.toString(); // …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.