2013-10-08 69 views
0

在此class使用泛型作爲java方法訪問修飾符

這種方法簽名是什麼意思?

<E extends RuntimeException> void genericThrow() throws E 

我期待看到像公立,私立等,在地方<E extends RuntimeException>

+3

這是一個[一般方法](http://docs.oracle.com/javase/tutorial/extra/generics/methods.html) –

+1

缺少訪問修飾符使得包專用。 –

+2

「默認」範圍(包rpivate),通用類型E延伸的RuntimeException,void返回類型,命名爲「genericThrow」,其拋出型E. – initramfs

回答

4

這是可能的這種方法有一個訪問修飾符;它只是沒有一個。這意味着它是封裝私有的。

public <E extends RuntimeException> void genericThrow() throws E 
private <E extends RuntimeException> void genericThrow() throws E 
protected <E extends RuntimeException> void genericThrow() throws E 

<E extends RuntimeException>聲明瞭E與一個上限一般類型參數。也就是說,E必須RuntimeException或子類。

+0

致謝異常。但通用方法的用途是什麼?從oracle文檔中,我無法理解通過使方法成爲通用來執行哪種類型的檢查。在我們的例子中,這意味着該方法只能拋出一個RuntimeException的子類的異常?我想應當寫爲:空隙genericThrow()拋出 Victor

+0

對於可拋出任何'RuntimeException'的方法,泛型不是必需的。 'void genericThrow()拋出RuntimeException'就足夠了。在這裏通用的例外並不真正有幫助,因爲你不能說'拋出新的E()'。你也可以說'抓(RuntimeException的E)'調用,趕上他們無論如何方法時。 – rgettman

+0

爲什麼不能我們說:孔隙genericThrow()拋出 Victor