2010-06-12 46 views
13

Nếu tôi cố gắngAndroid: Không thể gọi toString() trên kiểu nguyên thủy int

nltxt = nllen.toString(); 

với nllen

int nllen = nl.getLength(); 

tôi nhận được lỗi

Không thể gọi toString() trên kiểu nguyên thủy int.

Tôi muốn chuyển đổi chuỗi int thành chuỗi để tôi có thể hiển thị số lượng mục nhập bằng Nhật ký ... Tại sao nó không hoạt động?

Trả lời

12

Loại nguyên thủy không phải là đối tượng và do đó không có bất kỳ phương pháp nào.

Để chuyển đổi nó thành sử dụng chuỗi String.valueOf(nlTxt).

29

Nguyên thủy không có bất kỳ trường hoặc phương pháp nào. Đôi khi trình biên dịch sẽ "autobox" nguyên thủy của bạn vào lớp tương ứng, Integer trong trường hợp này. Có lẽ đó là những gì bạn mong đợi trong trường hợp này. Đôi khi trình biên dịch sẽ không làm điều này. Trong trường hợp này, nó không tự động autobox nó.

Bạn có một vài lựa chọn:

  1. String.valueOf(nltxt)

  2. "" + nltxt (hoặc nếu bạn có một cái gì đó hữu ích để viết cùng với số lượng, làm "nltxt equals " + nltxt

  3. Làm "autoboxing" theo cách thủ công: new Integer(nltxt).toString().

  4. Định dạng i t theo một số cách tùy chỉnh: String.format("nltxt is %d which is bad%n", nltxt)

+1

Không sử dụng 2 và 3 –

+0

Tôi có thể đồng ý rằng 3 có một chút phức tạp. Nhưng tại sao không phải 2? – aioobe

+1

aioobe: Nó không phải là rất dễ đọc. Nếu ai đó nhanh chóng quét qua mã họ có thể bỏ lỡ rằng bạn chỉ đang cố chuyển đổi nó thành một mã mạnh. – Mike

6

Bạn cũng có thể sử dụng Integer.toString(nllen); cho việc này.

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