2012-04-02 38 views
21

Có chú thích chung hay tiêu chuẩn trong Java cho các phương thức, trong khi được xác định, chưa được triển khai không?Java: Chú thích chung cho "Chưa được triển khai"

Vì vậy mà, ví dụ, nếu tôi đã sử dụng một phiên bản pre-alpha của một thư viện có chứa một cái gì đó giống như

@NotImplementedYet 
public void awesomeMethodThatTotallyDoesExactlyWhatYouNeed(){ /* TODO */ } 

tôi sẽ nhận được một cảnh báo thời gian biên dịch khi cố gắng gọi awesomeMethodThatTotallyDoesExactlyWhatYouNeed?

+2

Hầu hết các thư viện chỉ đơn giản là không phơi bày phương pháp đó. Điều gì sẽ là điểm? –

+1

Tôi đã gặp nó, [là người dùng] (https://github.com/NICTA/scoobi/issues/71). Có thể làm nổi bật API trong tương lai như một ý tưởng, khiến người dùng sẵn sàng cho nó? – rampion

+0

Bạn có thể, tất nhiên, tạo chú thích "@NotImplementedYet" của riêng bạn và sử dụng chú thích đó theo cách bạn muốn: http://docs.oracle.com/javase/1.5.0/docs/guide/language/annotations.html – paulsm4

Trả lời

14

Bạn có thể muốn sử dụng UnsupportedOperationException và phát hiện các cuộc gọi đến các phương pháp chưa được triển khai khi chạy thử nghiệm của mình.

+2

OP đang tìm chú thích sẽ cho người gọi biết thời gian biên dịch là phương thức sẽ ném 'UnsupportedOperationException'. Như phía bên kia tạo chú thích như vậy là dễ dàng, anh ta đang tìm kiếm một cái gì đó được chấp nhận như quy ước –

+0

Không chính xác giải pháp được yêu cầu nhưng tốt hơn là không có gì, và phần nào trực giao (tốt hơn theo những cách khác). – bbarker

0

Google thư viện sử dụng @Beta chú thích cho API đó là khả năng thay đổi nhưng các phương pháp được thực hiện mặc dù

1

Bạn có thể tạo chú thích của riêng bạn. Với chính sách lưu giữ thời gian chạy, bạn có thể định cấu hình các mục tiêu xây dựng để biết chú thích này, nếu cần.

import java.lang.annotation.ElementType; 
import java.lang.annotation.Retention; 
import java.lang.annotation.RetentionPolicy; 
import java.lang.annotation.Target; 

@Target({ 
    ElementType.ANNOTATION_TYPE, 
    ElementType.METHOD, 
    ElementType.CONSTRUCTOR, 
    ElementType.FIELD}) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface Unimplemented { 

    boolean value() default true; 
} 
Các vấn đề liên quan