2013-04-27 12 views
3

,類文字中提到的「文本類型」Java中類文字的類型究竟是什麼?在Java教程<a href="http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html" rel="nofollow">http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html</a>

最後,還有一個特殊的文字稱爲類 文字,通過採取類型名稱並追加」的.class形成「;爲 示例,String.class。這是指 表示類型本身的對象(類型爲Class)。

但在Java規範http://docs.oracle.com/javase/specs/jls/se7/html/,類文字是不是下3.10字面型放,而是15.8下放置。主要表達式

那麼,爲什麼呢?

回答

6

Java中類文字的類型究竟是什麼?

被擦除的類型是java.lang.Class

未刪除類型的Foo.class將是java.lang.Class<Foo>


其原因是在JLS作爲主要表達是技術:

  • 類字面不是單一文字。它是三個(或更多)不同的符號組合形成這種「固定的,字面上的事物」。

  • 他們決定致電它是一個字面值,因爲這個值是一個常數。

  • 從句法的角度來看,它必須與(其他)主要表達式一樣進入語法的相同部分......以便語法描述沒有大量模糊/上下文敏感性的語言。

所以它真的可以放在JLS的任何一個地方。但他們只能把它放在一個地方。由於文字部分中的其他文字是單一的(即一個符號),因此將其放入主表達式部分是有意義的。

但是底線是,他們爲什麼決定以這種方式組織JLS並不重要。類文字的含義不取決於它的指定位置。

-2

不要太直接地用這個名字。 A Foo.class相當於Class.forName("pkg.Foo"),這比簡單的文字如1和​​要複雜得多。

+0

他在問語言,而不是API。你的陳述在這方面基本上是錯誤的。 – EJP 2013-04-27 08:02:11