คำถามติดแท็ก annotations

ในการเขียนโปรแกรมจะใช้คำอธิบายประกอบเพื่อเพิ่มข้อมูลให้กับองค์ประกอบรหัสซึ่งระบบชนิดไม่สามารถแสดงได้

23
ฉีด Mockito mocks ลงใน Spring bean
ฉันต้องการฉีดวัตถุจำลอง Mockito ลงในถั่ว Spring (3+) เพื่อวัตถุประสงค์ในการทดสอบหน่วยกับ JUnit ขณะนี้การพึ่งพาถั่วของฉันถูกฉีดโดยใช้@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 …


13
การสแกนหมายเหตุประกอบ Java เมื่อรันไทม์ [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน3 เดือนที่ผ่านมา ปรับปรุงคำถามนี้ วิธีที่ดีที่สุดในการค้นหา classpath ทั้งหมดสำหรับคลาสที่มีคำอธิบายประกอบคืออะไร ฉันทำห้องสมุดและฉันต้องการอนุญาตให้ผู้ใช้ใส่คำอธิบายประกอบในชั้นเรียนของพวกเขาดังนั้นเมื่อเว็บแอปพลิเคชันเริ่มต้นฉันต้องสแกน classpath ทั้งหมดเพื่อหาคำอธิบายประกอบบางอย่าง คุณรู้ว่าห้องสมุดหรือสิ่งอำนวยความสะดวก Java ทำเช่นนี้? แก้ไข: ฉันกำลังคิดถึงบางสิ่งบางอย่างเช่นฟังก์ชั่นใหม่สำหรับ Java EE 5 Web Services หรือ 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 ทำงานกับวิธีส่วนตัวหรือไม่
หากฉันมี@Transactional -คำอธิบายประกอบในวิธีส่วนตัวใน Spring bean คำอธิบายประกอบจะมีผลกระทบหรือไม่? หาก@Transactionalคำอธิบายประกอบเป็นวิธีสาธารณะมันจะทำงานและเปิดธุรกรรม public class Bean { public void doStuff() { doPrivateStuff(); } @Transactional private void doPrivateStuff() { } } ... Bean bean = (Bean)appContext.getBean("bean"); bean.doStuff();

5
codestyle; ใส่ javadoc ก่อนหรือหลังคำอธิบายประกอบ?
ฉันรู้ว่ามันไม่ใช่ประเด็นสำคัญที่สุดของปัญหา แต่ฉันเพิ่งรู้ว่าฉันสามารถใส่บล็อกความคิดเห็น javadoc ก่อนหรือหลังการเพิ่มความคิดเห็น สิ่งที่เราต้องการนำมาใช้เป็นมาตรฐานการเข้ารหัส? /** * This is a javadoc comment before the annotation */ @Component public class MyClass { @Autowired /** * This is a javadoc comment after the annotation */ private MyOtherClass other; }

5
นโยบายการเก็บข้อมูลที่แตกต่างกันมีผลต่อบันทึกย่อของฉันอย่างไร
ทุกคนสามารถอธิบายในทางที่ชัดเจนแตกต่างในทางปฏิบัติระหว่างjava.lang.annotation.RetentionPolicyค่าคงที่SOURCE, CLASSและRUNTIME? ฉันก็ไม่แน่ใจเหมือนกันว่าวลี "การเก็บคำอธิบายประกอบ" หมายถึงอะไร
175 java  annotations 

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 Geekให้เบาะแสบางอย่าง แต่มันไม่ชัดเจนสำหรับฉัน: Java 6 ลบ apt และทำให้ javac สามารถจัดการคำอธิบายประกอบและปรับปรุงกระบวนการเพื่อให้ได้การคำนวณขั้นตอนเดียวที่ง่ายขึ้น นี่คือเส้นทางของลอมบอก บางทีด้วย Java 6 กระบวนการคอมไพล์จะเป็น: javac -> apt -> กระบวนการ lombok apt -> อ่านคลาสไฟล์และเพิ่มเมธอด set / get โดยใช้ASM ? คุณช่วยแสดงรายละเอียดเพิ่มเติมเกี่ยวกับกลไกให้ฉันดูได้ไหม
148 java  annotations  lombok 

30
intellij บอกไม่ถูกต้องว่าไม่พบชนิดของถั่วสำหรับที่เก็บอัตโนมัติ
ฉันได้สร้างการทดสอบหน่วยอย่างง่าย แต่ IntelliJ เน้นสีแดงไม่ถูกต้อง ทำเครื่องหมายว่าเป็นข้อผิดพลาด ไม่มีถั่ว? ดังที่คุณเห็นด้านล่างผ่านการทดสอบหรือไม่? ดังนั้นจึงต้องเป็นแบบ Autowired?

6
วิธีระบุค่าให้กับหมายเหตุประกอบจาก Constant 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 { .... } อย่างไรก็ตามสิ่งนี้ให้ข้อผิดพลาดในการคอมไพล์เช่นค่าคำอธิบายประกอบควรเป็น initializer ของอาร์เรย์เป็นต้นมีใครรู้ว่าฉันสามารถใช้ค่าคงที่แบบสตริงหรือค่าคงที่สตริง [] เพื่อให้ค่าของคำอธิบายประกอบได้หรือไม่
146 java  arrays  annotations 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.