gpt4 book ai didi

java - 有没有办法将包私有(private)类传递给静态方法

转载 作者:行者123 更新时间:2023-12-02 07:38:09 26 4
gpt4 key购买 nike

我想知道是否有一种方法可以从另一个包调用静态方法,该方法将包私有(private)类作为参数?这是将 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);
}
}

B类.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;
}
}

最佳答案

这就是接口(interface)的用途。

您有一个公共(public)接口(interface)(好吧,所有接口(interface)都是公共(public)的),它定义了所有需要公开访问的方法和一个包私有(private)实现。并且您将对象传递给的方法只需要了解接口(interface)。

在你的情况下,你会得到这样的结果:

public interface Message {
public String getMessage();
}

然后

class MessagePackagePrivate implements Message {
...
}

最后:

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

关于java - 有没有办法将包私有(private)类传递给静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11919730/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com