假設我有一個包:包訪問(protected修飾符)
package com.g00gle.car
和
package com.g00gle.car.stereo
是否有可能在com.g00gle.car類訪問類成員在com.google.car.stereo中? (假設班級成員被貼上保護標籤)。
答案是否定的(默認情況下),但有沒有辦法規避這種情況?我有一個應用程序,我想切入不同的塊...爲了做到這一點,我創建了包的擴展。令人沮喪的是封裝私人訪問的丟失。
假設我有一個包:包訪問(protected修飾符)
package com.g00gle.car
和
package com.g00gle.car.stereo
是否有可能在com.g00gle.car類訪問類成員在com.google.car.stereo中? (假設班級成員被貼上保護標籤)。
答案是否定的(默認情況下),但有沒有辦法規避這種情況?我有一個應用程序,我想切入不同的塊...爲了做到這一點,我創建了包的擴展。令人沮喪的是封裝私人訪問的丟失。
這個需求將在Java 7中用superpackages解決。或者至少會是這樣。關於Java 7的所有內容目前都在播出。
編輯
感謝彼得Štibraný在下面的評論的鏈接。 Mark Reinhold's blog表示此版本已於2012年的某個時間發佈到Java 8(同時發佈版本和日期)。
你可以在一個方法扔在com.google.car [類名],提供了訪問受保護的成員:
protected Member member;
...
public Member getMember(){
return member;
}
是的,但是作爲OP說你不再有訪問限制...任何人都可以訪問該成員。 – 2010-11-10 20:53:11
不幸的是,我在Java中使用反射。我使用Field.set(obj,f)方法,它需要訪問obj中的字段f。 – 2010-11-10 20:56:59
嗯哦,看起來這可能是遠遠過時。 – 2010-11-10 20:52:22
即將發佈的java版本的計劃現在很清楚(http://blogs.oracle.com/mr/entry/plan_b_details)。現在計劃爲Java 8提供超級包和模塊支持。 – 2010-11-10 20:53:59
謝謝@Peter,你有我可以添加到我的問題的鏈接嗎? – 2010-11-10 20:54:56