所以我在这里阅读了一些关于stackoverflow的文章,感觉我的大部分都在工作,但是他们通常没有关于如何使用getter/setters的例子
我非常接近搞清楚这个问题,只是很难搞清楚这最后一部分
目前我正在使用的程序中的所有商店都使用openShop(id); 但我希望能够使用openShop("GENERAL_STORE"); 因为它更易于维护且易于查看而无需查找ID.
我有什么想法我做错了吗?
private enum shopName {
GENERAL_STORE(577);
private final int id;
shopName(int id) {
this.id = id;
}
public int getId() {
return this.id;
}
};
public void openShop(String name) {
int shopId = shopName(name).getId(); //line with error
//int shopId = shopName.shopName(name).getId(); //I've also tried this
openShop(shopId);
}
public void openShop(int id) {
/* blah */
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误
$ ./compiler.sh
file.java:#: error: cannot find symbol
int shopId = shopName(name).getId();
^
symbol: method shopName(String)
location: class File
1 error
Run Code Online (Sandbox Code Playgroud)
shopName(name)不会做你认为它做的事情.此代码尝试调用方法shopName并name作为参数传递,但您没有这样的方法.
如果你想shopName根据提供的名称使用enum shopName.valueOf(name).所以你的代码可能应该是这样的:
int shopId = shopName.valueOf(name).getId();
Run Code Online (Sandbox Code Playgroud)
另请注意,IllegalArgumentException如果您不提供正确的名称,此方法将抛出.
枚举也被认为是类型,因此它的名称应该像其他Java(非原始)类型一样以大写字母开头.所以shopName改为ShopName.
| 归档时间: |
|
| 查看次数: |
43 次 |
| 最近记录: |