2010-10-30 41 views
11

Tôi muốn lưu trữ tên danh sách và biệt hiệu riêng lẻ cho mỗi tên dưới dạng Enum trong Java. Số lượng biệt hiệu sẽ không thay đổi. Mục đích là để có thể nhận được một tên đầy đủ từ một biệt danh. Hiện nay tôi đã thực hiện điều này như sau:Java - Enum với trường mảng

public enum Names { 

    ELIZABETH(new String[] {"Liz","Bet"}),  
    ... 
    ; 

    private String[] nicknames; 

    private Names(String[] nicknames) 
    { 
     this.nicknames = nicknames 
    } 


    public Names getNameFromNickname(String nickname) { 
     //Obvious how this works 
    } 
} 

tôi khá không thích phải lặp lại new String[] {...}, vì vậy tôi tự hỏi nếu có ai có thể gợi ý một sự thay thế, ngắn gọn hơn, phương pháp thực hiện điều này?

Chúc mừng,

Pete

Trả lời

30

thông số vararg:

private Names(String... nicknames) { 

Bây giờ bạn có thể gọi constructor mà không cần tạo một cách rõ ràng mảng:

ELIZABETH("Liz", "Bet", "another name") 

Details (xem "Arbitrary Số Arguments "phần)