Java HashMap中的factory方法对象存在访问问题
我的语法有编译器问题,希望此方法在Java HashMap中的factory方法对象存在访问问题,java,methods,hashmap,Java,Methods,Hashmap,我的语法有编译器问题,希望此方法在Hashmap对象myMap上工作。我需要Add方法获取String值,并使用Hashmapput函数添加(键、值)对 我试图将newMap的工厂方法初始化放在main中,但遇到了访问问题 import java.util.*; public class MyMap { public static String item; public static String brand; Map<String, String> myMa
Hashmap
对象myMap
上工作。我需要Add
方法获取String
值,并使用Hashmap
put
函数添加(键、值)对
我试图将newMap
的工厂方法初始化放在main
中,但遇到了访问问题
import java.util.*;
public class MyMap {
public static String item;
public static String brand;
Map<String, String> myMap = newMap();
public static void main(String[] args) {
myMap.Add("apple");
}
public static HashMap<String, String> newMap() {
return new HashMap<>();
}
public static void Add(String item) {
String brand = "nobrand";
myMap.put(item, brand);
}
}
import java.util.*;
公共类MyMap{
公共静态字符串项;
公共静态串品牌;
Map myMap=newMap();
公共静态void main(字符串[]args){
myMap.Add(“苹果”);
}
公共静态HashMap newMap(){
返回新的HashMap();
}
公共静态无效添加(字符串项){
字符串brand=“nobrand”;
myMap.put(项目、品牌);
}
}
静态/非静态项导致的编译错误。我将它们全部设置为静态,以便在整个课堂上访问所有内容。您有两个错误:
首先,您应该将myMap
设置为静态,如下所示:
static Map<String, String> myMap = newMap();
import java.util.HashMap;
import java.util.Map;
public class Test {
public static String item;
public static String brand;
static Map<String, String> myMap = newMap();
public static void main(String[] args) {
Add("apple");
}
public static HashMap<String, String> newMap() {
return new HashMap<>();
}
public static void Add(String item) {
String brand = "nobrand";
myMap.put(item, brand);
}
}
我完全同意你的回答 我想多给点帮助
import java.util.HashMap;
import java.util.Map;
public class MyMap {
/**
* item - brand Map
*/
private Map<String, String> myMap;
/**
* constructor
*/
public MyMap() {
this.myMap = new HashMap<>();
}
/**
* add item with default brand - nobrand
* I think function: void addItem (String item, String brand) is better
* @param item
*/
public void addItem(String item) {
final String brand = "nobrand";
this.myMap.put(item, brand);
}
/**
* get brand by item
* @param item
* @return brand or null if there is no item in myMap
*/
public String getBrandByItem(String item) {
return this.myMap.get(item);
}
/**
* This is using for testing MyMap class
* @param args
*/
public static void main(String[] args) {
// initialisation MyMap - final is my habit :)
final MyMap myMap = new MyMap();
// add apple with default nobrand
myMap.addItem("apple");
// assert that your brand item is nobrand
System.out.println(myMap.getBrandByItem("apple"));
// output is : `nobrand`
}
}
import java.util.HashMap;
导入java.util.Map;
公共类MyMap{
/**
*项目-品牌地图
*/
私人地图myMap;
/**
*建造师
*/
公共MyMap(){
this.myMap=newhashmap();
}
/**
*添加具有默认品牌-nobrand的项目
*我认为功能:void addItem(字符串项,字符串品牌)更好
*@param项目
*/
公共无效附加项(字符串项){
最终字符串brand=“nobrand”;
this.myMap.put(项目、品牌);
}
/**
*按项目获取品牌
*@param项目
*@return brand或null(如果myMap中没有项目)
*/
公共字符串getBrandByItem(字符串项){
返回此.myMap.get(项目);
}
/**
*这是用于测试MyMap类的
*@param args
*/
公共静态void main(字符串[]args){
//初始化MyMap-最终版是我的习惯:)
final MyMap MyMap=新建MyMap();
//添加带有默认nobrand的apple
myMap.addItem(“苹果”);
//断言您的品牌商品是nobrand
System.out.println(myMap.getBrandByItem(“苹果”);
//输出为:`nobrand`
}
}
静态映射myMap
?看起来您遇到了许多java初学者遇到的一个问题:静态
关键字的真正含义。对于这个概念,场外教程可能是一个更好的资源。我的研究告诉我,静态使类可以访问该项,而不仅仅是类的实例。@CodeNewb,您尝试从add
的静态上下文访问非静态myMap
,我仍然得到一个编译错误:非静态方法无法从静态上下文Add(“苹果”)引用Add(字符串);我在Add函数中去掉了static关键字declaration@CodeNewb好的,我将为您添加总类并检查它