2016-12-16 14 views
7

phép nói rằng chúng tôi có một chú thích Java như sau:Chú thích: khi là arrayOf cần

@Target(ElementType.METHOD) 
@Retention(RetentionPolicy.RUNTIME) 
@Documented 
public @interface Hans { 
    String[] value() default {}; 
} 

Trong Kotlin tôi được phép sử dụng chú giải như sau:

@Hans(value = "test") 

Ngay sau khi tôi thay đổi tên thuộc tính từ 'value' đến 'name' không được phép sử dụng cú pháp này nữa, thay vào đó tôi cần phải có arrayOf (..).

@Hans(name = arrayOf("test")) 

Đó có phải là lỗi hay quyết định thiết kế và nếu vậy lý do đằng sau nó là gì.

Rất cám ơn trước Trân trọng

Trả lời

7

Không, đây không phải là lỗi. Java xử lý chú thích value đặc biệt và cho phép bỏ qua tên thông số chú thích khi bạn sử dụng nó. Kotlin tuân theo điều trị đặc biệt này và cũng cho phép bạn bỏ qua tên tham số, cho phép bạn viết @Hans("test"). Hỗ trợ cú pháp này cho các tham số mảng yêu cầu xử lý tham số là vararg, do đó Kotlin thực hiện điều đó và cho phép bạn bỏ qua arrayOf.

+0

Rất cám ơn lời giải thích/thời gian của bạn –

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