Java-如何从同一个包中的类获取私有(private)数据

标签 java class methods package private

我在同一个包下有两个类。
A 类有一个 private hashmap _books = new ConcurrentHashMap<String,Book>();字符串标题是关键。
在 B 类中,我想检索某个 Book根据 A 类私有(private) map 中的标题获取对象。

我试图在类A中添加一个公共(public)方法

public Book getBookFromMap(String title ){
    return _books.get(title);
} 

在 B 类中,我尝试调用该方法,但没有成功。 Eclipse 说“方法 getBookFromMap 未定义”。在类里面我尝试这样做:

Book bookFromMap= getBookFromMap(booktitle);

那是B类getBookFromMap下出现红线的时候,我估计可能是我调用的不对?我该如何解决这个问题?非常感谢!

最佳答案

您不能直接访问在另一个类中定义的方法。

您需要做的是使用类 A 的构造函数初始化类 A 的实例,例如:

A myInstance = new A();

然后你就可以通过使用访问A类中的方法了

Book myBook = myInstance.getBookFromMap(booktitle);

替代解决方案

通过使用 static :通常最好不要使用 static,但在这种情况下,它可能是更简单的方法。 (尽量避免静电,但在必要时使用它)

所以你需要将共享的东西定义为static:

在 A 类中你将拥有:

private static hashmap _books = new ConcurrentHashMap<String,Book>();


public static Book getBookFromMap(String title ){
    return _books.get(title);
} 

在 B 类中:

Book bookFromMap= A.getBookFromMap(booktitle); //accessing getBookFromMap method in class A

关于Java-如何从同一个包中的类获取私有(private)数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32475010/

相关文章:

c++ - 非静态数据成员的成员初始值设定项列表和默认成员初始值设定项之间有什么区别?

java - Java中从用户处获取类的对象名称

java - 如何跟踪 Java 中的方法调用?

java - 让方法在简单的 Java 程序中工作

java - 面向对象编程、方法调用未按预期工作、子类

java - 如何在 Java 中使用 KeyPressed

java - 将 XML 从标记重新格式化为属性和名称

java - JAX-RS (Jersey 2) 安全性,@PermitAll 和@RolesAllowed 未按预期工作

Java VSync 没有全屏窗口

类中的 C++ 对象构造