[英]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.