我可以用JAVA编写一个带有通用对象参数的方法吗
我有办法我可以用JAVA编写一个带有通用对象参数的方法吗,java,Java,我有办法 public int addTransaction(Transactions tr){ //etc... } 现在我想创建一个新的方法,它将完全像addTransaction一样,但是它将采用不同类型的对象Order 我意识到我可以创造出这样的东西: public int addTransaction(Order tr){ //etc... } 然而,我想知道是否可以在括号内有一个泛型类型的方法,以便传递我想要的任何对象。这可以做到吗?除非订单和交易之间存在超类/子类关
public int addTransaction(Transactions tr){
//etc...
}
现在我想创建一个新的方法,它将完全像addTransaction
一样,但是它将采用不同类型的对象Order
我意识到我可以创造出这样的东西:
public int addTransaction(Order tr){
//etc...
}
然而,我想知道是否可以在括号内有一个泛型类型的方法,以便传递我想要的任何对象。这可以做到吗?除非
订单
和交易
之间存在超类/子类关系,否则不行。如果存在这种关系,您只需要获取超类的重载。除非订单
和交易
之间存在超类/子类关系,不需要。如果存在这样的关系,您只需要接受超类的重载。泛型方法创建如下
public <T> int addTransaction(T tr){
//TODO:
return 0;
}
public int addTransaction(T tr){
//待办事项:
返回0;
}
通用方法创建如下
public <T> int addTransaction(T tr){
//TODO:
return 0;
}
public int addTransaction(T tr){
//待办事项:
返回0;
}
事务
和Order
需要从相同的类进行扩展,或实现相同的Interface
,或者需要扩展另一个才能使其工作
以下是几个例子:
一个类
扩展另一个:
public class Test {
public int addTransaction (final Transaction tr) {
}
}
class Transaction {
}
class Order extends Transaction {
}
两者共享一个共同的界面:
public class Test {
public int addTransaction (final Process tr) {
}
}
interface Process {
}
class Transaction implements Process {
}
class Order implements Process {
}
交易
和订单
都需要从相同的类扩展或实现相同的接口
,或者一个需要扩展另一个才能工作
以下是几个例子:
一个类
扩展另一个:
public class Test {
public int addTransaction (final Transaction tr) {
}
}
class Transaction {
}
class Order extends Transaction {
}
两者共享一个共同的界面:
public class Test {
public int addTransaction (final Process tr) {
}
}
interface Process {
}
class Transaction implements Process {
}
class Order implements Process {
}
您可以使用泛型传递任何对象吗?对你是这样做的:
public <T> int addTransaction(T tr) {
// ...
}
因为T
是无约束的。不管是哪种方式,使用tr
所能做的就是调用在对象上声明/定义的方法
现在,如果有一些共同的父类型Transaction
和Order
(以及其他任何人)共享,那么事情开始变得更有意义了。如果公共父类型是parent
,则可以编写如下内容
public <T extends Parent> int addTransaction(T tr) {
// ...
}
我什么也看不见
所以,底线是,你可以做这样的事情,但这样做的价值是值得怀疑的。你能用泛型传递任何对象吗?对你是这样做的:
public <T> int addTransaction(T tr) {
// ...
}
因为T
是无约束的。不管是哪种方式,使用tr
所能做的就是调用在对象上声明/定义的方法
现在,如果有一些共同的父类型Transaction
和Order
(以及其他任何人)共享,那么事情开始变得更有意义了。如果公共父类型是parent
,则可以编写如下内容
public <T extends Parent> int addTransaction(T tr) {
// ...
}
我什么也看不见
所以,底线是,你可以做这样的事情,但这样做的价值是可疑的。我们可以做:公共类SOTest{public int addTransaction(T tr){}
我们可以做:公共类SOTest{public int addTransaction(T tr){}
此处不需要使用泛型:您可以简单地使用对象
。这也可以使用!这里不需要使用泛型:您也可以简单地使用Object
。这也可以使用!