我试图创建一个Java方法,它接受一个对象类型和它应该转换成的数据类型。
例如,如果我应该能够返回一个值1作为Int或双根据需要。我使用类传递数据类型作为参数。
问题:如何使方法泛型以接受基于输入参数的返回类型?
下面的代码只是一个示例,它可能在语法上不正确,用于解释我的问题。
public class JavaTest {
public static void main(String[] args) {
getValue(1,int.class);
getValue(1,double.class);
getValue("adf",String.class);
}
public static <E> void getValue(Object obj,Class<?> type) {
if (type == String.class) {
// return string value
}else if (type == int.class) {
//return Integer.parseInt(obj);
}else if (type == double.class) {
//return Double.parseDouble(obj);
}
}
}
由于java方法只能返回一个结果,因此必须进行一些变通。如您所知,您可以返回一个对象
。
正如这里提到的:从java中的方法返回不同类型的数据?你可以用两个不同类型的私有值来编写你的一个类,以便稍后询问设置了哪一个!
把这个应用到你的问题上,你可以这样写:
public class ReturningValues {
public final double y;
public final int x;
public ReturningValues(double y, int x) {
this.y = y;
this.x = x;
}
}
然后使用该类作为方法的返回值:
public static ReturnValues myMethod(){
ReturningValues rv = new ReturningValues(null,1);
return rv;
}
public static void main(String[] args) {
int i= (int) getValue(10,int.class);
System.out.println("int value -->"+i);
Double d = (Double) getValue(25.023,double.class);
System.out.println("double d-->"+d);
String s=(String) getValue("adf",String.class);
System.out.println("String s-->"+s);
}
public static <T> Object getValue(Object obj,Class<?> type) {
return obj;
}
如何使该方法成为基于输入参数接受返回类型的通用方法?
type参数可用于指定方法的返回类型,您可以通过该参数的type参数将其与类
参数相关联:
public static <E> E getValue(Object obj, Class<E> type) {
您还需要使用Class.cast()
使编译器确信该方法返回正确的类型。(您也可以使用普通的强制转换,但这将受到类型安全警告的影响。)例如:
// ...
} else if (type == Integer.class) {
return type.cast(Integer.valueOf(obj.toString()));
}
还要注意的是,这种方法不能像代码所示,直接影响到基元类型的转换。您必须转换为它们的包装器类。换句话说,不能使用int.class
,double。类
等。;您必须改为使用Integer。类
,双精度。类
,等等。
我试图创建一个返回泛型类型参数的方法。 我有一个类车辆订单扩展抽象类订单。在类订单中,我创建了一个抽象方法接收HiredObject。这个方法不会接收任何参数,并将返回一个泛型。 我在VehicleOrder类中实现了这个方法,并将其设置为返回类参数vehicle。 问题是,当我实例化一个新的VeilceOrderorororororororororororororderororororororo
可以使用泛型将返回类型与参数类型匹配吗? 实例案例: 我有一个抽象类,可以从不同的POJO导入数据,这个类包含一个abstract方法importData。 importData返回的对象必须与传递给该方法的对象类型相同。 由于抽象方法的每个实现的对象类型不同,并且类型不扩展另一个,如何定义抽象方法,以便实现返回类型和传递类型必须匹配? 经过考验: 结果: 方法的返回类型不必与传递的对象类型匹配。
问题内容: 我有一个方法以a 作为参数。 在中,我如何知道a 是还是a 是? 问题答案: 根据用户omain的回答“如果使用<?>,则意味着您将不会在任何地方使用参数化类型。要么转到特定类型(在您的情况下,似乎是),要么转到非常通用的“ 另外,我相信如果您使用问号,编译器将在运行时(类型;有效Java的第119页)消除类型不匹配的情况,绕过擦除,并有效地消除了使用泛型类型所带来的好处? 要回答发问
问题内容: 背景 我曾经写过这种方法: 应该这样称呼它: 这很好用(尽管我在研究当前容易出错的问题时在这里的答案中已经看到)。 目前的情况 无论如何,现在我正在编写以下代码(在扩展javax.servlet.jsp.tagext.TagSupport的类中): 目的是可以这样称呼: 我的评估方法中的代码显然不起作用。的第二个参数应该是Class对象。这导致我: 我的问题 如何获得通用(返回)类型的
我在我的Java程序中写了这个函数: 这就是我所说的: 它是有效的,但我觉得我应该能够省略第一个参数,并从返回类型(结果被分配到的类型)推断出它。这可能吗?如果是,语法是什么?