2010-03-01 65 views
15

Bản sao có thể xảy ra:
How and where are Annotations used in Java?
Java beans, annotations: What do they do? How do they help me?Bạn có sử dụng chú thích Java không?

Lặp đi lặp lại, tôi đọc về chú thích Java 5 của trở thành một 'tính năng tiên tiến' của ngôn ngữ. Cho đến gần đây, tôi đã không sử dụng nhiều chú thích (trừ @Override thông thường, & c), nhưng hoạt động trên một số dự án liên quan đến dịch vụ web đã bắt tay tôi. Vì tôi đã học Java trước 5, tôi chưa bao giờ thực sự dành thời gian ngồi xuống và mò mẫm hệ thống chú thích.

Câu hỏi của tôi- các bạn có thực sự sử dụng chú thích không? Chúng hữu ích như thế nào đối với bạn, hàng ngày? Có bao nhiêu StackOverflow-ers đã phải viết một chú thích tùy chỉnh?

+3

Điều này khá chủ quan. Vui lòng chỉnh sửa và đánh dấu câu hỏi này là Community Wiki. Dưới đây là một số câu hỏi tương tự ít hoặc nhiều hơn với câu trả lời thú vị: http://stackoverflow.com/questions/2072681/java-beans-annotations-what-do-they-do-how-do-they-help-me, http: // stackoverflow.com/questions/1372876/how-and-where-are-annotations-used-in-java và http://stackoverflow.com/questions/1862666/why-are-people-continuing-to-use-xml-mapping- tập tin thay vì chú thích – BalusC

+1

[Tạo thử nghiệm tùy chỉnh bằng cách sử dụng chú giải java] (http://www.singhajit.com/java-custom-annotations/) –

Trả lời

6

Có lẽ trường hợp hữu dụng nhất và được sử dụng Java chú thích là sử dụng POJO + Chú thay vì các file cấu hình xml

tôi sử dụng nó rất nhiều kể từ (như bạn đã nêu) nếu bạn sử dụng một khuôn khổ web (như mùa xuân hoặc đường may) chúng thường có nhiều chú thích để giúp bạn.

Gần đây tôi đã viết một số chú thích để xây dựng một mục tùy chỉnh, mục đích xác thực và chú thích các chú thích (sử dụng khía cạnh siêu dữ liệu của chú thích). Và IMO, họ giúp rất nhiều việc làm cho mã sạch hơn, dễ hiểu và dễ quản lý hơn.

dự án
3

hiện tại (200KLOC), chú thích tôi sử dụng tất cả các thời gian là:

@NotNull/@Nullabe 
@Override 
@Test 
@Ignore 
@ThreadSafe 
@Immutable 

Nhưng tôi đã không viết chưa chú thích của riêng tôi ... Tuy nhiên!

1

Chú thích chỉ dành cho các khung công tác và chúng hoạt động tốt trong chế độ ngủ đông/jpa. cho đến khi bạn viết một khung công tác cần một số thông tin bổ sung được truyền cho nó, bạn sẽ không viết chú thích của riêng bạn.

tuy nhiên có tính năng junit mới và mát mẻ cho phép bạn viết các chú thích của riêng bạn trong các thử nghiệm - http://blog.mycila.com/2009/11/writing-your-own-junit-extensions-using.html

+0

Tức là, cho đến khi bạn nhận ra tất cả những thứ hữu ích bạn có thể làm chúng nếu bạn tự viết chúng! –

0

tôi sử dụng chú thích hàng ngày và họ thật tuyệt vời. Tôi sử dụng chúng với jsf và jpa và thấy chúng dễ quản lý và làm việc hơn các cấu hình XML thay thế.

2

Tôi đã sử dụng chú thích cho:

  • Hibernate, vì vậy tôi không cần phải giữ các tập tin XML rất lớn;
  • Nối tiếp XML, vì vậy tôi mô tả cách đối tượng sẽ được hiển thị trong chính đối tượng đó;
  • Cảnh báo xóa các cảnh báo mà tôi không muốn vô hiệu hóa (và trường hợp đó không thể giải quyết đúng trường hợp cụ thể).

Tôi đã tạo chú thích cho:

  • Mô tả trạng thái cần thiết để cho phương pháp của tôi để được thực thi (ví dụ, một người dùng phải đăng nhập);
  • Đánh dấu phương thức của tôi là có thể thực thi từ một nền tảng cụ thể với các thuộc tính bổ sung cho nền tảng đó;
  • Và có thể một số hoạt động tương tự khác.

Chú thích mà tôi đã tạo được đọc bằng Phản xạ khi tôi cần thêm thông tin về đối tượng mà tôi đang làm việc. Nó hoạt động và nó hoạt động rất tốt.

0

Tôi sử dụng chú thích để mô tả trong hệ thống đồng bộ hóa của tôi, lớp nào là chuyên môn của lớp được chú thích và môi trường mà chúng được sử dụng (khi đối tượng được tạo, nó sẽ hoạt động cho danh sách thực thể của nó các lớp thực thể tốt nhất để tạo cho các nút trên mạng, tức là, một thực thể Player cho một nút máy chủ thay vì một thực thể ServerPlayer). Ngoài ra, các thuộc tính bên trong các lớp được mô tả và cách chúng được đồng bộ hóa trên các máy.

0

Chúng tôi có trình tạo báo cáo như một phần của ứng dụng web của chúng tôi. Người dùng có thể thêm một số lượng lớn các tiện ích con là tất cả các biến thể nhỏ trên cùng một bộ chủ đề (biểu đồ, bảng, v.v.).

Giao diện người dùng tự xây dựng dựa trên chú thích tùy chỉnh trong các lớp tiện ích con. (ví dụ: chú thích có thể chứa giá trị mặc định và giá trị hợp lệ sẽ hiển thị dưới dạng menu thả xuống. Hoặc cờ cho biết trường đó có bắt buộc không).

Nó đã được bật ra là một cách tốt để cho phép các nhà phát triển để quây ra các vật dụng mà không cần phải chạm vào giao diện người dùng.

0

Chúng tôi chỉ sử dụng các chú thích để tạo ra một cách đơn giản để xác nhận POJO của chúng tôi:

@NotEmpty 
@Pattern(regex = "I") 
private String value; 

Sau đó chúng tôi chạy qua Hibernate validator mà sẽ làm tất cả những xác nhận của chúng tôi đối với chúng tôi:

import org.hibernate.validator.ClassValidator; 
import org.hibernate.validator.InvalidValue; 

public void validate(T validateMe) { 
    ClassValidator<T> validator = new ClassValidator<T>((Class<T>) validateMe.getClass()); 
    InvalidValue[] errors = validator.getInvalidValues(validateMe); 
} 

Các công trình lớn . Mã sạch đẹp.

0

Chúng tôi sử dụng chú thích tùy chỉnh như một phần của hệ thống kiểm tra tích hợp của chúng tôi:

@Artifact: Kết hợp thử nghiệm tích hợp với ID phát hành. Ma trận theo dõi sau đó được tạo tự động cho các phòng thử nghiệm và quản lý của chúng tôi.

@Exclude: Bỏ qua thử nghiệm tích hợp dựa trên nền tảng/phiên bản trình duyệt. Giữ các lỗi IE 6 khỏi làm tắc nghẽn hoạt động kiểm tra hàng đêm của chúng tôi :)

@SeleniumSession: Xác định cài đặt selen thử nghiệm cụ thể cho từng thử nghiệm tích hợp.

Chúng là một công cụ rất mạnh, nhưng bạn phải sử dụng chúng cẩn thận. Chỉ cần xem các tệp lớp .NET Enterprise sớm để xem chú thích bắt buộc cơn ác mộng có thể là gì :)

Các vấn đề liên quan