使用泛型重载 Java 中的方法
Overloading Methods in Java with generics
我想知道是否可以通过改变泛型参数来重载方法。示例:
class Foo <T> { ... }
class Bar {
public void do (Foo<Integer> obj) {}
public void do (Foo<Double> obj) {}
}
我知道这不会被编译。但是例如,在 kotlin 中,您有 JvmName 注释,您可以在其中注释这些方法以编译代码。 Java也有这个可能吗?
同一类型中不能有两种具有相同擦除的方法。也就是说,您可以操纵擦除保留相同的类型。例如,如果 Foo
是一个接口:
interface Foo<T> { /* ... */ }
class Bar {
public void do_(Foo<Integer> obj) { }
public <A extends Object & Foo<Double>> void do_(A obj) { }
}
但是,即使不涉及泛型,也要避免重载方法。
我想知道是否可以通过改变泛型参数来重载方法。示例:
class Foo <T> { ... }
class Bar {
public void do (Foo<Integer> obj) {}
public void do (Foo<Double> obj) {}
}
我知道这不会被编译。但是例如,在 kotlin 中,您有 JvmName 注释,您可以在其中注释这些方法以编译代码。 Java也有这个可能吗?
同一类型中不能有两种具有相同擦除的方法。也就是说,您可以操纵擦除保留相同的类型。例如,如果 Foo
是一个接口:
interface Foo<T> { /* ... */ }
class Bar {
public void do_(Foo<Integer> obj) { }
public <A extends Object & Foo<Double>> void do_(A obj) { }
}
但是,即使不涉及泛型,也要避免重载方法。