我发现我有一种方法可以接受两种类型的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。我当然可以有一个新方法,它接受一个整数,但我不是那样做的。用泛型做任何方法吗?
答案 0 :(得分:1)
没有。您无法定义两种类型的“OR”类型。
但是,您可以接受包含Number
和Long
类型的Integer
,并使用其longValue()
方法:
public void foo(Number number) {
Long id = number.longValue();
// rest of code stays the same
}