使用Generics有什么好处?

Jav*_*anz 0 java generics

我是Java中的Generics的新手.我对使用泛型的好处几乎没有怀疑.请参考以下代码 -

<T extends Bounceable> void goGreen(T ob);

void goGreen(Bounceable ob);
Run Code Online (Sandbox Code Playgroud)

这里Bounceable是一个界面.

有人可以解释一下上面定义的区别.它们都限制调用者将对象传递给它,而不是Bounceable类型.如果可以在界面风格中实现相同的代码,那么使用Generics有什么好处?提前致谢.

Kep*_*pil 6

如果你没有像你的例子中那样返回任何东西,你就没有通过使用泛型来获得任何东西.另一个声明同样有用.

另一方面,泛型允许您创建以下方法:

<T extends Bounceable> T goGreen(T ob);
Run Code Online (Sandbox Code Playgroud)

这将返回与传入的类型相同的对象,在很多场景中都会为您保存一个角色.
引用@LuiggiMendoza的评论中的优秀例子:
假设你有Ball implements BounceableCellphone implements Bounceable.当您传递Ball给此方法时,您希望该方法返回a Ball而不是a Cellphone.

使用非通用方法无法实现这一点.

  • @VinceEmigh这不一样.该方法意味着您将传递和接收类"T"的实例.假设你有'Ball implements Bounceable`和`Cellphone实现Bounceable`.当你将`Ball`传递给这个方法时,你希望该方法返回一个`Ball`,而不是`Cellphone`. (6认同)