2011-08-31 13 views
0

我不確定這是Java相關的問題還是Android相關的問題,請讓我知道它是哪一個。顯然,我正在嘗試爲Android開發,並使用Eclipse。Java與Android:使用Classname訪問函數與此

在java類中MainThread我已經聲明瞭一個常量。這個聲明有效: private static final String TAG = MainThread.class.getSimpleName();

但是這並不是: private static final String TAG = this.class.getSimpleName();

爲什麼是它使用第二方法將返回錯誤: 令牌「類」語法錯誤,標識預計

回答

1

好,this.class根本就不是有效的Java。特別是,在靜態上下文中使用this(例如靜態變量初始值設定項)是沒有意義的。

如果你正在尋找一些你可以從類到類的剪切和粘貼,而不必擔心類名改變,Java中沒有語法會讓你這麼做。通過在桌面Java上捕獲堆棧跟蹤可以使用技巧,但它們可能無法在Android上運行。如果我是你,我會堅持明確指定類名。

(這有可能是this.class是嵌套類型是有意義的有各種古怪的那裏,我永遠記住了它 - 但它有用這裏)

0

在Java中有兩種類型的成員。靜態成員或實例成員。靜態成員與類型或類相關聯。實例成員與類的實例(即對象)相關聯。在這兩種情況下,您都需要在課堂中定義靜態字段。隱含的這個變量是一個類的實例成員,靜態代碼不能引用實例成員。

所以第二個例子給出了一個錯誤的原因是,沒有當時的類的實例您引用這個所以不能得到解決。