2010-11-10 193 views
3

假設我有一個包:包訪問(protected修飾符)

package com.g00gle.car 

package com.g00gle.car.stereo 

是否有可能在com.g00gle.car類訪問類成員在com.google.car.stereo中? (假設班級成員被貼上保護標籤)。

答案是否定的(默認情況下),但有沒有辦法規避這種情況?我有一個應用程序,我想切入不同的塊...爲了做到這一點,我創建了包的擴展。令人沮喪的是封裝私人訪問的丟失。

回答

3

這個需求將在Java 7中用superpackages解決。或者至少會是這樣。關於Java 7的所有內容目前都在播出。

編輯

感謝彼得Štibraný在下面的評論的鏈接。 Mark Reinhold's blog表示此版本已於2012年的某個時間發佈到Java 8(同時發佈版本和日期)。

+0

嗯哦,看起來這可能是遠遠過時。 – 2010-11-10 20:52:22

+0

即將發佈的java版本的計劃現在很清楚(http://blogs.oracle.com/mr/entry/plan_b_details)。現在計劃爲Java 8提供超級包和模塊支持。 – 2010-11-10 20:53:59

+0

謝謝@Peter,你有我可以添加到我的問題的鏈接嗎? – 2010-11-10 20:54:56

0

你可以在一個方法扔在com.google.car [類名],提供了訪問受保護的成員:

protected Member member; 

... 

public Member getMember(){ 
    return member; 
} 
+0

是的,但是作爲OP說你不再有訪問限制...任何人都可以訪問該成員。 – 2010-11-10 20:53:11

+0

不幸的是,我在Java中使用反射。我使用Field.set(obj,f)方法,它需要訪問obj中的字段f。 – 2010-11-10 20:56:59