繁体   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