gpt4 book ai didi

java - 如何声明我的方法来接收任何类型的列表作为参数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:17:16 26 4
gpt4 key购买 nike

public static int menu(String texto, ArrayList<String> opciones) {
for (int i = 0; i < opciones.size(); i++) {
System.out.println((i + 1) + ") " + opciones.get(i));
}

return solicitarNumero(texto + " [1-"
+ opciones.size() + "]", true, 1, opciones.size());
}

我有一个接收文本 (texto) 的方法,提示用户输入选项编号和带有选项的 ArrayList。例如{创建条目,删除条目,退出}

solicitarNumero 处理选项号的请求并验证它。

现在,当我使用不同类(Franquicia、Gerente、Sistema)的变量调用此方法时,我必须遍历每个 ArrayList 并创建一个包含该类的 toString 的新对象。

像这样

for (Franquicia franquicia : listaFranquicia) {
listaDatosFranquicia.add(franquicia.toString());
}

然后我将该方法与新的 ArrayList 一起使用。

menu("Ingrese el numero de franquicia "
+ "que desea asignar a este control",
listaDatosFranquicia) - 1));

有什么方法可以简单地做

menu("Ingrese el numero de franquicia "
+ "que desea asignar a este control",
listaFranquicia) - 1));

无需创建新的 ArrayList?

最佳答案

是的。将方法改为

public static int menu(String texto, List<?> opciones) {
for (int i = 0; i < opciones.size(); i++) {
System.out.println((i + 1) + ") " + opciones.get(i));
}

return solicitarNumero(texto + " [1-"
+ opciones.size() + "]", true, 1, opciones.size());
}

基本上等同于:

public static int menu(String texto, List<?> opciones) {
for (int i = 0; i < opciones.size(); i++) {
System.out.println((i + 1) + ") " + opciones.get(i).toString());
}

return solicitarNumero(texto + " [1-"
+ opciones.size() + "]", true, 1, opciones.size());
}

除非您的一个选项为 null(在这种情况下,第二个选项将导致 NullPointerException,而第一个选项将打印“null”)。

List<?>意思是:一些未知类型的列表。但是由于所有类型都扩展了 java.lang.Object,而您所关心的只是对象的 toString() 表示形式,您实际上不需要知道列表的实际通用类型。

关于java - 如何声明我的方法来接收任何类型的列表作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33583902/

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