可以使用泛型将返回类型与参数类型匹配吗?
实例案例:
我有一个抽象类,可以从不同的POJO导入数据,这个类包含一个abstract方法importData。
importData返回的对象必须与传递给该方法的对象类型相同。
public abstract POJO importData(final POJO dataObject, final String messageId);
由于抽象方法的每个实现的对象类型不同,并且类型不扩展另一个,如何定义抽象方法,以便实现返回类型和传递类型必须匹配?
经过考验:
public abstract <T> T importData(final T jaxbObject, final String messageId);
结果:
方法的返回类型不必与传递的对象类型匹配。
必须根据调用方法时使用的类型为类类型指定一个字母,该字母将在使用方法时指定
public abstract T importData(final T dataObject, final String messageId);
然后,在实现中,您可以检查对象的类型是否有不同的行为
YourAbstractClass c = new YourAbstractClass() {
@Override
public <T> T importData(T dataObject, String messageId) {
if(dataObject instanceof String){
//doSomething
}else if (dataObject instanceof POJO){
//do POJO things
}
return null;
}
};
可以使用方法级别的泛型参数:
public abstract <T> T importData(final T dataObject, final String messageId);
但是要注意,这种类型的T
可能会因每次通话而有所不同。例如,以下是可能的:
POJO myPojo = myClass.importData(otherPojo, "messageId");
Integer someInt = myClass.importData(5, "otherMessageId");
String aSring = myClass.importData("Hello World", "anotherMessageId");
如果这不是您想要的,您可以使用@Leviand的类级泛型参数的建议。
我试图创建一个返回泛型类型参数的方法。 我有一个类车辆订单扩展抽象类订单。在类订单中,我创建了一个抽象方法接收HiredObject。这个方法不会接收任何参数,并将返回一个泛型。 我在VehicleOrder类中实现了这个方法,并将其设置为返回类参数vehicle。 问题是,当我实例化一个新的VeilceOrderorororororororororororororderororororororo
我试图创建一个Java方法,它接受一个对象类型和它应该转换成的数据类型。 例如,如果我应该能够返回一个值1作为Int或双根据需要。我使用类传递数据类型作为参数。 问题:如何使方法泛型以接受基于输入参数的返回类型? 下面的代码只是一个示例,它可能在语法上不正确,用于解释我的问题。
此外,是否可以说泛型通配符类型仅在方法的参数声明中才有意义?
有四种不同的类型:地点、语言、技术和行业。每个类型都有一个存储库,可以返回这些类型的集合。例如位置列表。每个类型都有一个类型为String的name属性。有一个字符串列表。它可以包含位置、语言等名称。我想编写一个函数来查找那些与字符串列表名称匹配的类型实体(位置、语言、...)。我在想这样的事情: 这是不正确的,那么如何对集合进行查询,然后如何确定name属性是否存在呢?
问题内容: 我试图理解Java泛型,它们似乎很难理解。例如,这很好… …就是这个… … 还有这个 … …但是不能编译: 有人可以用简单的语言解释发生了什么吗? 问题答案: 对于泛型类型,主要要了解的是它们不是协变的。 因此,尽管您可以这样做: 以下内容将无法编译: 这是为了避免您绕过通用类型的情况: 因此,一一讲解您的示例 1个 您的通用方法采用a ,而您采用;(基本上是)。可以分配给类型,并且编