Ký tự này xuất phát từ chữ ký nội bộ JVM và biểu diễn tên lớp.
Xem JVM Specification §4.3.2. Field Descriptors:
B byte signed byte
C char Unicode character code point in the Basic Multilingual Plane,
encoded with UTF-16
D double double-precision floating-point value
F float single-precision floating-point value
I int integer
J long long integer
L ClassName ; reference an instance of class ClassName
S short signed short
Z boolean true or false
[ reference one array dimension
Kiểu mảng bao gồm một [
cho mỗi chiều, tiếp theo là chữ ký yếu tố của họ, ví dụ [I
cho int[]
. Tương tự, Object[]
được đại diện bởi [Ljava/lang/Object;
nội bộ.
Dường như, khi chuyển đổi từ tên lớp nội bộ sang tên hiển thị ứng dụng, tức là trả về Class.getName()
được triển khai lần đầu tiên, nó được triển khai chỉ chuyển đổi /
thành .
mà không quan tâm đến ký hiệu mảng. Sau đó, nó không thay đổi vì lý do tương thích.
Note Java 8 giới thiệu getTypeName()
để giải quyết vấn đề, ví dụ: String[].class.getTypeName()
sản lượng java.lang.String[]
.
http://stackoverflow.com/questions/5085889/l-array-notation-where-does-it-come-from và http://stackoverflow.com/questions/3442090/java-gì-là-này-ljava-lang-object –
Nó không phải là. Tiền tố mảng là '['. – chrylis
Tại sao 'L' đặc biệt, thay vì một số chữ cái khác?Nó có tùy ý không? Hay nó có ý nghĩa gì? – GreenGiant