最後,還有一個特殊的文字稱爲類 文字,通過採取類型名稱並追加」的.class形成「;爲 示例,String.class。這是指 表示類型本身的對象(類型爲Class)。
但在Java規範http://docs.oracle.com/javase/specs/jls/se7/html/,類文字是不是下3.10字面型放,而是15.8下放置。主要表達式
那麼,爲什麼呢?
最後,還有一個特殊的文字稱爲類 文字,通過採取類型名稱並追加」的.class形成「;爲 示例,String.class。這是指 表示類型本身的對象(類型爲Class)。
但在Java規範http://docs.oracle.com/javase/specs/jls/se7/html/,類文字是不是下3.10字面型放,而是15.8下放置。主要表達式
那麼,爲什麼呢?
Java中類文字的類型究竟是什麼?
被擦除的類型是java.lang.Class
。
未刪除類型的Foo.class
將是java.lang.Class<Foo>
。
其原因是在JLS作爲主要表達是技術:
類字面不是單一文字。它是三個(或更多)不同的符號組合形成這種「固定的,字面上的事物」。
他們決定致電它是一個字面值,因爲這個值是一個常數。
從句法的角度來看,它必須與(其他)主要表達式一樣進入語法的相同部分......以便語法描述沒有大量模糊/上下文敏感性的語言。
所以它真的可以放在JLS的任何一個地方。但他們只能把它放在一個地方。由於文字部分中的其他文字是單一的(即一個符號),因此將其放入主表達式部分是有意義的。
但是底線是,他們爲什麼決定以這種方式組織JLS並不重要。類文字的含義不取決於它的指定位置。
不要太直接地用這個名字。 A Foo.class
相當於Class.forName("pkg.Foo")
,這比簡單的文字如1
和要複雜得多。
他在問語言,而不是API。你的陳述在這方面基本上是錯誤的。 – EJP 2013-04-27 08:02:11