0

我想知道是否有办法从另一个以包私有类作为参数的包中调用静态方法?这是将 MessagePackagePrivate 类移动到另一个 .java 文件并将其公开的唯一方法吗?如果我不这样做,它会给出这个错误:“MessagePackagePrivate 类型不可见”,这是正常的。

因此,如果是这种情况,即使您的类公开了要公开使用的静态方法,如果不在同一个包中调用该类,也不能使用该类?

这是代码片段:

主类.java

package packageA;

import packageB.*;

public class MainClass {
    public static void main(String[] args) {
        ClassB.printString(new MessagePackagePrivate("Package problem"), 12);
    }
}

ClassB.java

package packageB;

public class ClassB {

    public static void printString( MessagePackagePrivate message , int numbers) {
        System.out.println(message.getMessage() + " numbers: " + numbers );
        // other logics will be implemented here ...
    }
}

    class MessagePackagePrivate {
        private String text;

        MessagePackagePrivate(String text) {
            this.text = text;
        }

        public String getMessage() {
            return this.text;
        }
    }
4

2 回答 2

2

这就是接口的用途。

你有一个公共接口(好吧,所有接口都是公共的),它定义了所有需要公开访问的方法和一个包私有实现。而你传递对象的方法只需要知道接口。

在你的情况下,你会有这样的事情:

public interface Message {
  public String getMessage();
}

接着

class MessagePackagePrivate implements Message {
   ...
}

最后:

public static void printString( Message message , int numbers) {
   ...
}
于 2012-08-12T16:12:03.337 回答
0

您可以实现一个接口(例如Printable)并将该接口用作静态方法中的参数类型。

于 2012-08-12T16:13:05.890 回答