第一次海报在这里。我搜索了stackoverflow,但找不到这个问题的任何答案,也许我的措辞不正确。
我有一个类,我在构造函数中创建了一个 HashMap(下面的代码):
导入 java.util.HashMap; 导入 java.util.ArrayList;
嬉皮类扩展客户{
Hippie() {
name = "Hippie";
HashMap<String, Double> preferences = new HashMap<String,Double>();
preferences.put("Donuts", 1.5);
preferences.put("Biscotti", 0.5);
}
Run Code Online (Sandbox Code Playgroud)
}
不幸的是,当我创建上面“嬉皮”对象的实例时,即使构造函数成功完成,对实例对象中 HashMap 的任何引用也会返回 null。
公共类 SEJavaDemo{ public static void main(String[] args){
Hippie Billy = new Hippie();
System.out.println(Billy.preferences);
System.out.println(Billy.name);
}
Run Code Online (Sandbox Code Playgroud)
}
例如,上面的代码打印出:
null 嬉皮士
我的最终目标是能够访问由 Hippie 构造函数创建的 HashMap。任何有关为什么它返回 null 而不是 HashMap 的见解将不胜感激。谢谢!
class Hippie extends Customer {
public HashMap<String, Double> preferences;
Hippie() {
name = "Hippie";
preferences = new HashMap<String,Double>();
}
}
Run Code Online (Sandbox Code Playgroud)
该preferences不是在课外可见,作为你的内创建 constructor 。您需要将其声明为实例变量,然后在构造函数中对其进行初始化,以使其对外部类可见。
也一样name。
虽然这可能会解决您的问题,但建议您执行以下操作:-
class Hippie extends Customer {
private HashMap<String, Double> preferences
Hippie() {
name = "Hippie";
preferences = new HashMap<String,Double>();
}
// have a getter for the hashmap
public HashMap<String,Double> getMap(){
return preferences;
}
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:-
Hippie billy = new Hippie(); // Couldn't digest `Billy` as object name.
System.out.println(billy.getMap());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7535 次 |
| 最近记录: |