泛型方法可以定义在普通类中,也可以定义在泛型类中
 class ArrayAlg{
public static <T> T getMiddle(T...a){
return a[a.length/2];
}
}
 
注意:类型变量放在修饰符后( public static )
当调用泛型方法时,方法名前尖括号中放入具体的类型
String middle=ArrayAlg.<String>getMiddle("John","Q.","Public");
 
大多数情况下,方法调用可以省略<String>类型参数
String middle=ArrayAlg.getMiddle("John","Q.","Public");

 
类型变量的限定
有时,类或方法需要对类型变量加以约束
 class ArrayAlg{
public static <T> T min(T[] a){
if(a==null||a.length==0) return 0;
T smallest=a[0];
for(int i=1;i<a.length;i++)
if(smallest.compareTo(a[i])>0)
smallest=a[i];
return smallest;
}
}
上例min方法内部,变量smallest类型为T,而且smallest必须有compareTo方法程序才能正常运行
解决的方法是限制T实现Comparable接口
public static <T extends Comparable> T min(T[] a)...
一个类型变量或通配符可以有多个限定,限定类型用&分隔
T extends Comparable & Serializable

JAVA泛型方法与类型限定的更多相关文章

  1. Java泛型总结---基本用法,类型限定,通配符,类型擦除

    一.基本概念和用法 在Java语言处于还没有出现泛型的版本时,只能通过Object是所有类型的父类和类型强制转换两个特点的配合来实现类型泛化.例如在哈希表的存取中,JDK1.5之前使用HashMap的 ...

  2. Java泛型类与类型擦除

    转载自:http://blog.csdn.net/lonelyroamer/article/details/7868820 一.Java泛型的实现方法:类型擦除 前面已经说了,Java的泛型是伪泛型. ...

  3. Java 泛型 通配符类型

    Java 泛型 通配符类型 @author ixenos 摘要:限定通配符类型.无限定通配符类型.与普通泛型区别.通配符捕获 通配符类型 通配符的子类型限定(?都是儿孙) <? extends ...

  4. java 泛型的类型擦除和桥方法

    oracle原文地址:https://docs.oracle.com/javase/tutorial/java/generics/erasure.html 在Java中,泛型的引入是为了在编译时提供强 ...

  5. Scala类型限定

    package big.data.analyse.scala /** * 类型限定 * Created by zhen on 2018/12/9. */ object Lxxd { def main( ...

  6. Java中String类型细节

    Java中String类型细节 一 . String两种初始化方式 1 . String str1= “abc”;//String类特有的创建字符对象的方式,更高效 在字符串缓冲区中检测”abc”是否 ...

  7. 获取Spring容器中Bean实例的工具类(Java泛型方法实现)

    在使用Spring做IoC容器的时候,有的类不方便直接注入bean,需要手动获得一个类型的bean. 因此,实现一个获得bean实例的工具类,就很有必要. 以前,写了一个根据bean的名称和类型获取b ...

  8. 一文详解scala泛型及类型限定

    今天知识星球球友,微信问浪尖了一个spark源码阅读中的类型限定问题.这个在spark源码很多处出现,所以今天浪尖就整理一下scala类型限定的内容.希望对大家有帮助. scala类型参数要点 1. ...

  9. java基础--java.util.Date类型小结

    首先先来了解一下Date数据类型: . Date类型通常要和另一个 java.text.SimpleDateFormat类联合使用. 把long-->Date: public Date(long ...

随机推荐

  1. java判断一个数是否为素数[转]

    http://blog.csdn.net/lwcumt/article/details/8027586 import java.util.Scanner; //质数又称素数,是指在一个大于1的自然数中 ...

  2. 10个实用的Django技巧和建议

    Django 作为一个杰出的Python开源框架,或许得不到和其它流行框架如Rails这样多的赞美,但是它和其他框架一样精炼,非常注重DRY(Don’t Repeat Yoursef)原则.组件的重用 ...

  3. 基于mosquitto的MQTT服务器---SSL/TLS 单向认证+双向认证

    基于mosquitto的MQTT服务器---SSL/TLS 单向认证+双向认证 摘自:https://blog.csdn.net/ty1121466568/article/details/811184 ...

  4. 第一次用FontLad~

    FontLad 是一款制作字体的工具 使用流程: 1. 下载.安装软件FontLab Studio2.   File->New菜单,创建一个工程文件,会自动创建一个ASCII码表对应的字体表3. ...

  5. java 中toString()方法详解

    1.toString()方法 Object类具有一个toString()方法,你创建的每个类都会继承该方法.它返回对象的一个String表示,并且对于调试非常有帮助.然而对于默认的toString() ...

  6. modifiers标量调节器插件的定义和使用

    在插件目录plugins里新建文件 modifier.插件名.php文件(如 modifier.插件名.php)例:function smarty_modifier_test($utime, $for ...

  7. MVC各个层的作用

    (1)控制器的作用是调用模型,并调用视图,将模型产生的数据传递给视图.并让相关视图去显示.(2)模型的作用是获取数据并处理数据.(3)视图的作用是将取得的数据进行组织.美化等,并最终向用户终端输出.

  8. osgQt支持触摸屏

    1. osgQt的构造函数添加:setAttribute(Qt::WA_AcceptTouchEvents);//wyh 2. event()修改,支持触摸时间 bool GLWidget::even ...

  9. Spring框架总结(二)

    开发一个简单的Spring项目: 一.开发环境搭建: 1.引入源码jar :3.0以前的版本含有依赖jar包,3.0以后只有spring的核心jar 包 core的jar包 commons-loggi ...

  10. 编写高质量代码改善C#程序的157个建议——建议95:避免在构造方法中调用虚成员

    建议95:避免在构造方法中调用虚成员 在构造方法中调用虚方法会带来一些意想不到的错误,虽然这种方法不常见,但还是需要注意这类陷阱. static void Main() { American amer ...