嗯,一般我同意@Christian,但我有2個注意事項:
的main()函數可以也取得了私人。
如果您確實需要,您還可以調用私有方法/函數。
1 JVM無論如何都可以調用main()。使它公開可以使應用程序的另一個代碼也可以調用main()方法。通常情況下,沒有人會這樣做。爲什麼main()是公開的,主要原因是歷史性的,AFAIC。其他程序語言也有main()函數,並且它是公共的。
2如果您真的需要,可以使用Core Reflection API調用私有方法或訪問私有字段。它看起來是這樣的:
import java.lang.reflect.Field;
class SimpleKeyPair {
private String privateKey = "Cafe Babe"; // private field
}
public class PrivateMemberAccessTest {
public static void main(String[] args) throws Exception {
SimpleKeyPair keyPair = new SimpleKeyPair();
Class c = keyPair.getClass();
// get the reflected object
Field field = c.getDeclaredField("privateKey");
// set accessible true
field.setAccessible(true);
// prints "Cafe Babe"
System.out.println("Value of privateKey: " + field.get(keyPair));
// modify the member varaible
field.set(keyPair, "Java Duke");
// prints "Java Duke"
System.out.println("Value of privateKey: " + field.get(keyPair));
}
}
http://www.jguru.com/faq/view.jsp?EID=321191
又見這個偉大的答案https://stackoverflow.com/a/2489644/1137529
應該是公開的,但他們告訴你錯誤的原因。正確的原因是因爲它在Java語言參考中是這樣說的。 – Ingo