Den*_*niz 1 java static-methods private-methods
我有一个私有静态方法的主类.我想从另一个java类访问此方法.我试过一些方法,但是他们没有用.我该如何访问该方法?
像这样的主要班级;
public class RandomGenerate {
public static void main(String[] args) throws Exception {
System.out.print.ln("main method");
}
private static synchronized void createRandom(PersonObj person, int number, List s) {
System.out.println("deneme");
}
}
Run Code Online (Sandbox Code Playgroud)
我想createRandom从另一个像这样的java类调用;
public class Deneme {
RandomGenerate rg = new RandomGenerate();
RandomGenerate.createRandom(person, number, sList);
}
Run Code Online (Sandbox Code Playgroud)
然后,netbeans显示方法具有私有访问权限.
您不应该private从该类外部访问函数/变量.如果需要访问private类的变量,可以getter为该变量创建一个伴随,并getter在类上调用该函数.
对于函数,如果您尝试访问函数的类在同一个包中,或者是具有该函数的类的子类,请更改private为protected.protected允许同一个包或子类中的成员访问该项,但不包括该包之外的任何内容.
关于可见性的一个很好的解读Java是:http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
这显示了一个表:
Access Levels
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y N
no modifier Y Y N N
private Y N N N
Run Code Online (Sandbox Code Playgroud)
如果您需要在类之外使用它,请制作它public(或者protected如果您仅在子类中需要它,或者如果您仅在包中需要它,则默认[根本没有关键字])。如果您需要在课堂外使用它,而private您又无法做到不使用它private,那么这是您应该解决的设计问题。
...您可以使用反射(教程,文档)来解决它,它允许您获取方法并调用它,即使它是私有的。一旦你有了这个Method对象,你必须在调用它之前先调用setAccessibleto 。true
但这又是一个解决方法。使用正确的访问修饰符。
| 归档时间: |
|
| 查看次数: |
5814 次 |
| 最近记录: |