2012-05-22 92 views
2

假設以下情況: 我有一個專用字段和一個內部類引用或修改此字段。編譯器將此標記爲警告,因爲該字段應爲受保護的(默認可見度)。到現在爲止還挺好。修改快速修復'將可見性更改爲默認'

Eclipse很聰明,可以爲這種情況提供快速修復,當我使用它時,它只是刪除修改器。

這將刪除警告,但不符合我的代碼風格。我想用它代替私人而不是保護

有沒有辦法修改Quickfix的行爲?

示例代碼更好地認識:ActionListener的內部FOO被標記爲提前警告

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

public class Test { 

    private String foo = "bar"; 

    public void bla() { 

     ActionListener al = new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 

       foo = "whatev"; 
      } 
     }; 
    } 
} 

謝謝!編號: 感謝Aleks和Thin Pham。我誤解了的默認保護。不過,有沒有辦法修改Quickfix?

+0

請注意,「默認」可見性和「受保護」可見性不是同一回事。 'protected'意味着該字段可以被所有後代類訪問;默認可見性意味着該字段可被同一包中的所有類訪問。 –

+0

默認可見性不受保護,在java中它應該是Package,而在.NET中它應該是Internal。 – Thinhbk

+0

@AleksG謝謝,我誤解了...仍然想修改quickfix來使字段保護,除非它不是我的示例代碼(?)之類的好習慣 – moeTi

回答

0

我的「風格」是爲私人領域創造某種(如果必要的話)setter,因爲我試圖避免非私人領域。非私有字段的問題在於,您將不得不在基類中添加大量附加代碼,以捕獲可能來自後代類的所有可能的和無效的更改。如果你有一位受保護的/公開的二傳手,你可以捕捉到這個二傳手中的每一個無效變化,而其他人不必擔心。

在某些情況下,創建非專用字段是非常有意義的,但是您的代碼示例通常不是其中的一個(至少對我而言)。

0

快速修復與Eclipse中的其他所有內容一樣,由插件提供。最有可能的JDT插件之一。我認爲你唯一能做的就是在你自己的插件中編寫你自己的Quick Fix。