我在同一个包下有两个类。
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/