首页 / JAVA / Java泛型方法声明基础
Java泛型方法声明基础
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java泛型方法声明基础,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1193字,纯文字阅读大概需要2分钟。
内容图文
![Java泛型方法声明基础](/upload/InfoBanner/zyjiaocheng/697/9fadb889b0cf40988f2472a3784bf242.jpg)
我开始学习Genericsfor Java并且我阅读了几个教程,但我有点困惑,不知道如何声明泛型方法.
当我使用泛型类型时,定义方法的正确顺序是什么?我找到了这个样本,什么时候需要使用尖括号,何时不需要?
public class Box<A> {
private A a;
...
public void setA(A a) {
this.a = a;
}
public <A> List<A> transform(List<A> in) {
return null;
}
public static <A> A getFirstElement(List<A> list) {
return null;
}
public A getA() {
return a;
}
解决方法:
问题是您的代码使用相同的字符A,但它在不同的地方有几个不同的“含义”:
public class Box<T> {
需要括号,因为你在这里说:Box使用泛型类型,称为T.
T的用法没有括号:
private T a;
public void setA(T a) {
但是之后
public <T2> List<T2> transform(List<T2> in) {
正在引入另一种类型参数.我把它命名为T2,以明确它与T不同.想法是T2的范围只是一个方法转换.其他方法不知道T2!
public static <A> A getFirstElement(List<A> list) {
与上面相同 – 这里将是“T3”;-)
编辑您的评论:您不能使用静态方法使用类范围类型T.这根本不可能!请参阅here,了解其原因!
编辑2:泛型允许您编写通用的代码(因为它可以处理不同的类);但仍然给你编译时的安全性.例:
Box<String> stringBox = new Box<>();
Box<Integer> integerBox = new Box<>();
integerBox.add("string"); // gives a COMPILER error!
在人们使用仿制药之前,他们只能在整个地方处理对象;和手工铸造.
内容总结
以上是互联网集市为您收集整理的Java泛型方法声明基础全部内容,希望文章能够帮你解决Java泛型方法声明基础所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。