使用泛型与多个参数共享一个公共方法

时间:2016-09-07 15:43:59

标签: generics java-8

我发现我有一种方法可以接受两种类型的List<>对象。例如:

public void foo(Long id) {};

将在多个对象上调用上述函数,每个对象的id都是Long或Integer类型。发生的事情是,对于ID定义为Long的对象,此方法调用可以正常工作:

class Bar {Long id}
Bar test = new Bar(1L);
foo(bar.id);

但是对于具有Integer id的对象,我必须先使用foo将Integer转换为Long。我当然可以有一个新方法,它接受一个整数,但我不是那样做的。用泛型做任何方法吗?

1 个答案:

答案 0 :(得分:1)

没有。您无法定义两种类型的“OR”类型。

但是,您可以接受包含NumberLong类型的Integer,并使用其longValue()方法:

public void foo(Number number) {
    Long id = number.longValue();
    // rest of code stays the same
}