繁体   English   中英

返回Java中任何类型的方法

[英]Method that returns any type in Java

我正在上11年级的计算机科学课程,并且正在尝试编写一个简化许多代码的文件。 现在,我正在尝试将输入和输出合并为一个方法。

public static void askln(String text, String type){
     System.out.println(text);
     if(type.equals("int"))
          return getInt();
     if(type.equals("char"))
          return getChar();
     if(type.equals("String")) 
          return getString();
     if(type.equals("double"))
         return getDouble();
     if(type.equals("float"))
         return getFloat();
     if(type.equals("long")) 
         return getLong();
}

getInt()是一种从用户获取整数的方法。 我假设人们会理解其他吸气剂的作用。

此代码不起作用,因为“ void”不会返回任何内容。 我想知道是否有一个返回类型可以让我返回任何值。

您应该将参数String type交换为Class<T> type并将返回类型交换为T 您必须在返回值之前定义一个通用参数,因此签名将如下所示: public static <T> T askln(String text, Class<T> type)

为了使您的编译器满意,您可能应该使getXXX()方法返回Object并在返回T对其进行强制转换。

另一种方法是将函数作为方法的参数。 此解决方案基于此,因为您从用户获得的输入值可以作为字符串处理,然后我们需要一个将字符串转换为所需类型的函数。

public static <R> R askln(String text, Function<String, R> function){
    System.out.print(text);
    String str = getValue();
    return function.apply(str);
}

双重的例子

Function<String, Double> f = (Double::parseDouble);
Double d = askln("Type a number ", f);

和一个整数

Function<String, Integer> f2 = (Integer::parseInt);
Integer i = askln("Type an integer", f2);

然后,您可以定义不同的函数以转换为每种支持的类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM