我有一个方法
public int addTransaction(Transactions tr){
//etc...
}
现在我想创建一个新方法,它与addTransaction
完全相同,但它会采用不同的类型对象Order order
。
我意识到我可以创造这个:
public int addTransaction(Order tr){
//etc...
}
但是我想知道我是否可以在括号内使用泛型类型的方法,以便传递我想要的任何对象。可以这样做吗?
答案 0 :(得分:1)
除非Order
和Transactions
之间存在超类/子类关系,否则不会。如果存在这样的关系,你只需要超载来获取超类。
答案 1 :(得分:1)
你能使用泛型传递任何对象吗?是。你这样做:
public <T> int addTransaction(T tr) {
// ...
}
问题是,这对你有什么作用?咒语等同于
public int addTransaction(Object tr) {
// ...
}
因为T
不受约束。无论哪种方式,您只能使用tr
调用在Object
上声明/定义的方法。
现在,如果有一些共同的父类型Transaction
和Order
(以及其他任何人)共享,那么事情就会变得更有意义了。如果公共父类型是Parent
,那么您可以编写类似
public <T extends Parent> int addTransaction(T tr) {
// ...
}
您现在可以将tr
视为Parent
的实例。但是,这对你有什么影响呢?
public int addTransaction(Parent tr) {
// ...
}
我什么都看不到。
所以,底线,是的,你可以做这样的事情,但这样做的价值是可疑的。
答案 2 :(得分:0)
通用方法创建如下
public <T> int addTransaction(T tr){
//TODO:
return 0;
}
答案 3 :(得分:0)
Transaction
和Order
需要从同一Class
延伸或实现相同的Interface
,否则需要扩展另一个以便工作
以下是几个例子:
一个Class
扩展另一个:
public class Test {
public int addTransaction (final Transaction tr) {
}
}
class Transaction {
}
class Order extends Transaction {
}
两者共享一个共同的Interface:
public class Test {
public int addTransaction (final Process tr) {
}
}
interface Process {
}
class Transaction implements Process {
}
class Order implements Process {
}