0

パッケージのプライベートクラスをパラメータとして受け取る別のパッケージから静的メソッドを呼び出す方法があるかどうか疑問に思っていますか?MessagePackagePrivateクラスを別の.javaファイルに移動して公開する唯一の方法はそれですか?そうしないと、このエラーが発生します:「MessagePackagePrivateタイプが表示されません」これは正常です。

つまり、クラスが静的メソッドを公開して公開していても、同じパッケージで呼び出されていない場合、そのクラスは使用できません。

コードスニペットは次のとおりです。

MainClass.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 に答える