2009-11-03 35 views
91

Java Documents cho phương pháp
String[] java.io.File.list(FilenameFilter filter)
bao gồm này trong mô tả lợi nhuận:Làm thế nào tôi có thể khởi tạo một mảng String với độ dài 0 trong Java?

Mảng sẽ trống nếu thư mục rỗng hoặc không có tên đã được chấp nhận bởi bộ lọc.

Làm cách nào để thực hiện điều tương tự và khởi tạo mảng Chuỗi (hoặc bất kỳ mảng nào khác cho vấn đề đó) để có độ dài 0?

+6

Tôi chỉ nhận ra đây là một câu hỏi ngu ngốc: (Vì các mảng này được khởi tạo chính xác giống như bất kỳ mảng nào khác chỉ với kích thước 0. Hiển thị tần suất tôi khởi tạo mảng ngày hôm nay. không xóa nó) gây ra một ngày nào đó người khác có thể chỉ là ngu ngốc như tôi vừa mới :) –

Trả lời

160

Như những người khác đã nói,

new String[0] 

thực sự sẽ tạo ra một mảng trống. Tuy nhiên, có một điều tốt đẹp về mảng - kích thước của chúng không thể thay đổi, vì vậy bạn luôn có thể sử dụng cùng một tham chiếu mảng trống. Vì vậy, trong mã của bạn, bạn có thể sử dụng:

private static final String[] EMPTY_ARRAY = new String[0]; 

và sau đó chỉ trả lại EMPTY_ARRAY mỗi lần bạn cần - không cần phải tạo đối tượng mới mỗi lần.

+6

Dường như mọi người đều thích gõ: 'chuỗi cuối cùng riêng tư [] EMPTY_ARRAY = {}; ' –

+7

@Thomas: Tôi lấy ý kiến ​​của bạn, nhưng đối với trường hợp cụ thể này tôi thích hình thức rõ ràng hơn. Nó rõ ràng hơn với tôi rằng nó có nghĩa là "Tôi muốn một mảng chuỗi với 0 yếu tố" chứ không phải là "Tôi muốn một mảng với nội dung này - đó là sản phẩm nào". Chỉ là sở thích cá nhân tôi đoán. –

+1

@Tony - Tôi phải sử dụng một vài nơi mà Java có thể suy ra một loại. :-) –

9

Ok Tôi thực sự tìm thấy câu trả lời nhưng nghĩ mình sẽ 'nhập khẩu' câu hỏi vào SO nào

String[] files = new String[0];
hoặc
int[] files = new int[0];

+0

Thêm bình luận đó vào câu hỏi của bạn ... hoặc chọn một trong những câu trả lời cho biết điều tương tự. –

+4

Cảm ơn lời bình luận Jonathan. Như bạn có thể đã nhận thấy tôi đã đăng câu trả lời này trước bất kỳ ai khác (và như vậy không có câu trả lời để chọn). Tôi cũng không thấy cách thêm câu trả lời cho câu hỏi làm cho một câu hỏi hay hơn. –

18

String[] str = new String[0];?

14
String[] str = {}; 

Nhưng

return {}; 

sẽ không làm việc như các loại thông tin là mất tích.

+9

'trả về chuỗi mới [] {};' và 'trả về chuỗi mới [0];' cả hai đều hoạt động. – Bombe

0

Tạo một hàm không trả về giá trị rỗng thay vì trả về một mảng trống, bạn có thể xem qua mã bên dưới để hiểu.

public static String[] getJavaFileNameList(File inputDir) { 
    String[] files = inputDir.list(new FilenameFilter() { 
     @Override 
     public boolean accept(File current, String name) { 
      return new File(current, name).isFile() && (name.endsWith("java")); 
     } 
    }); 

    return files == null ? new String[0] : files; 
} 
Các vấn đề liên quan