gpt4 book ai didi

java - 使用参数作为接口(interface)项

转载 作者:行者123 更新时间:2023-12-01 17:50:05 24 4
gpt4 key购买 nike

在我正在制作的程序中,我试图获取给定季节的格式化季节名称(格式化后的名称)。我将格式化名称保留在界面中,因为如果我要使用 map ,则没有必要重新生成,因为我没有创建 TeamBuilder 的实例

季节界面:

public interface Seasons {
/*
* Contains a formatted list of seasons.
*
* An interface is being used as an alternative to using a Map in the
* TeamBuilder class, since calling parseTeam would have to build
* mappings for the seasons each time it
* was called. This way, the formatted name can simply be grabbed
*/
final String Skyrise = "Skyrise";
final String Toss_Up = "Toss%20Up";
final String Sack_Attack = "Sack%20Attack";
final String GateWay = "Gateway";
final String Round_Up = "Round%20Up";
final String Clean_Sweep = "Clean%20Sweep";
final String Elevation = "Elevation";
final String Bridge_Battle = "Bridge%20Battle";
final String Nothing_But_Net = "Nothing%20But%20Net";
final String Starstruck = "Starstruck";
final String In_The_Zone = "In%20The%20Zone";
final String Turning_Point = "Turning%20Point";
}

当我试图捕获这些季节时,问题就出现了。我的 TeamBuilder 类接受一个未格式化的参数(字符串季节)。 我的问题是,有没有什么方法可以使用 String 参数作为方法从接口(interface)获取特定项目?这是比使用 HashMap 更可取的方法,因为 HashMap 会不必要地重新生成相同的项目信息

所有这些类都可以在 Github 上找到该项目的页面。

最佳答案

如果您想以类型化的方式执行此操作,可以使用 Enum 来实现:

enum Season{
Skyrise,Toss_Up, Sack_Attack;

@Override
public String toString() {
switch(this){
case Skyrise: return "Skyrise";
case Toss_Up: return "Toss%20Up";
case Sack_Attack: return "Sack_Attack";
default: return "";
}
}
}
public class main{
public static void printSeason(Seasons seasons){
System.out.println(seasons);
}
public static void main(String[] args) {
Seasons e = Seasons.Skyrise;
printSeason(e);
System.out.println(e);
}
}

由于编译器在内部调用 toString(),因此您可以像我的示例一样将参数作为 Seasons 或 String 传递。

<小时/>

如果您仍然想使用没有“不必要重新生成”的 map ,您可以使用带有静态初始值设定项的静态字段,如下所示:

class Seasons {
private static Map<String,String> map = new HashMap<>();
static {
map.put("Skyrise", "Skyrise");
map.put("Toss_Up", "Toss%20Up");
}
public static String getFormatted(String key){
return map.getOrDefault(key,"");
}
}
class main{
public static void main(String[] args) {
System.out.println(Seasons.getFormatted("Skyrise"));
}
}

关于java - 使用参数作为接口(interface)项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51255156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com