簡體   English   中英

有沒有辦法將包私有類傳遞給靜態方法

[英]Is there a way to pass a package private class to static method

我想知道是否有一種方法可以從另一個將包私有類作為參數的包中調用靜態方法? 這是將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;
        }
    }

這就是接口的作用。

您有一個公共接口(嗯,所有接口都是公共的),該接口定義了需要可公開訪問的所有方法以及一個包私有實現。 您將對象傳遞給的方法只需要了解接口。

在您的情況下,您將獲得以下內容:

public interface Message {
  public String getMessage();
}

接着

class MessagePackagePrivate implements Message {
   ...
}

最后:

public static void printString( Message message , int numbers) {
   ...
}

您可以實現一個接口(例如Printable ),並將該接口用作靜態方法中的參數類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM