【问题标题】:How to create a method that dynamically returns an ArrayList?如何创建一个动态返回 ArrayList 的方法?
【发布时间】:2022-01-05 23:47:25
【问题描述】:

我想创建一个可以完成所有这 4 种方法的工作的方法。该方法必须返回一个ArrayList,其输入参数为int aString strchar cboolean b

该方法必须返回一个数组列表,其中包含元素 int (ax2)String ("new" + str)char (ascii(c) + 1)(下一个 ascii 字符) 而不是boolean b

我尝试从类似的堆栈溢出帖子中寻求帮助,但出现“非静态”错误

public class Program {
    public static void main(String[] args) {
        System.out.println(intoTwo(3));
        System.out.println(newString("Hello"));
        System.out.println(nextChar('c'));
        System.out.println(notFunc(true));
    }

    public static int intoTwo(int a) {
        return a * 2;
    }

    public static String newString(String str) {
        return "new " + str;
    }

    public static char nextChar(char c) {
        int ascii = c;
        return (char)(ascii + 1);
    }

    public static boolean notFunc(boolean b) {
        return (!b);
    }
}

程序及其输出的图像:

【问题讨论】:

    标签: java arraylist methods dynamic dispatch


    【解决方案1】:

    你可以使用List<Object>,因为Object是java中所有对象的顶级类,它可以包含任何类型, 如果您采用 4 个不同的参数,那么您可以这样做

    private static List<Object> newmethod(int i,char c,Boolean b,String s) {
       return Arrays.asList(i*2,"new"+s....);
    }
    

    如果您还需要输入作为列表,那么您可以使用instanceof 运算符来检查特定对象是否属于/可分配给某种类型,
    所以你需要做的就是检查 Object 是否是 String 并为 string 类型做逻辑,对所有其他类型都是一样的。

       private static List<Object> newmethod(List<Object> input){
        List<Object> result = new ArrayList<>();
        for(Object item: input){
           if(item instanceof String){
              result.add("new"+item.toString);
           }
           if(item instanceof Integer){
              result.add(2*(int)item);
           }
        //other types Boolean and Character logic;
           }
           return result;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-28
      • 2012-10-23
      • 2016-04-05
      • 2015-02-18
      • 2013-04-23
      • 2021-06-27
      • 2016-11-28
      相关资源
      最近更新 更多