Java泛型——泛型方法

简介: Java泛型——泛型方法

一、概念

不仅类可以声明泛型,类中的方法也可以声明仅用于自身的泛型,这种方法叫做泛型方法,其定义格式为
访问修饰符<泛型列表>返回类型 方法名(参数列表){

代码

}

在泛型列表中声明的泛型,可用于该方法的返回类型声明、参数类型声明和方法代码中的局部变量的类型声明
类中其他方法不能使用当前方法声明的泛型

二、什么时候使用泛型方法

不希望方法中的数据类型被类所限制

添加类型约束只作用于一个方法的多个参数之间,而不涉及到类中的其他方法时

施加类型约束的方法为静态方法,只能将其定义为泛型方法,因为静态方法不能使用其所在类的类型参数

class Animal{

public void eat(){
    System.out.println("动物吃");
}

}
class Dog extends Animal{

public void eat(){
    System.out.println("啃骨头");
}

}
class Cat extends Animal{

public void eat(){
    System.out.println("吃鱼");
}

}

class Demo1{

public <T> void PrinInfo(T t){
    System.out.println(t);
}
//类型约束的方法为静态方法
public static <T extends Animal> void PrinInfo2(T t){
    t.eat();
}

}

public class Test {

public static void main(String[] args) {        
    Demo1.PrinInfo2(new Dog());
    Demo1.PrinInfo2(new Cat());
}

}
/*
啃骨头
吃鱼
*/

三、代码演示

泛型方法,更加灵活,不受泛型类约束,比方法重载更加灵活

class A{

public void printInfo(T t){
    System.out.println(t);
}

}
//方法重载,
class B{

public void print1(int a){
    System.out.println(a);
}
public void print1(String a){
    System.out.println(a);
}

}
class demo1{

//泛型方法
public <T> void PrinInfo(T t){
    System.out.println(t);
}
//泛型方法的重载
public <T,T2> void PrinInfo(T t,T2 t2){
    System.out.println(t);
    System.out.println(t2);
}

}
public class Test {

public static void main(String[] args) {        
    A<String> a = new A<String>();
    a.printInfo("haha");
    //a.printInfo(11);    //报错
    
    //泛型方法,更加灵活,不受泛型类影响
    demo1 d = new demo1();
    d.PrinInfo("哈哈");    //可以使用任何类型
    d.PrinInfo(234);
    d.PrinInfo(234.234);
}

}
/*
haha
哈哈
234
234.234
*/

目录
相关文章
|
10天前
|
算法 Java Linux
java制作海报二:java使用Graphics2D 在图片上合成另一个照片,并将照片切割成头像,头像切割成圆形方法详解
这篇文章介绍了如何使用Java的Graphics2D类在图片上合成另一个照片,并将照片切割成圆形头像的方法。
21 1
java制作海报二:java使用Graphics2D 在图片上合成另一个照片,并将照片切割成头像,头像切割成圆形方法详解
|
4天前
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
14 1
|
8天前
|
Java 编译器
Java“返回类型为 void 的方法不能返回一个值”解决
在 Java 中,如果一个方法的返回类型被声明为 void,那么该方法不应该包含返回值的语句。如果尝试从这样的方法中返回一个值,编译器将报错。解决办法是移除返回值语句或更改方法的返回类型。
|
5天前
|
存储 安全 Java
🌱Java零基础 - 泛型详解
【10月更文挑战第7天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
6 1
|
8天前
|
Java
让星星⭐月亮告诉你,Java NIO之Buffer详解 属性capacity/position/limit/mark 方法put(X)/get()/flip()/compact()/clear()
这段代码演示了Java NIO中`ByteBuffer`的基本操作,包括分配、写入、翻转、读取、压缩和清空缓冲区。通过示例展示了`position`、`limit`和`mark`属性的变化过程,帮助理解缓冲区的工作原理。
17 2
|
8天前
|
Java
让星星⭐月亮告诉你,jdk1.8 Java函数式编程示例:Lambda函数/方法引用/4种内建函数式接口(功能性-/消费型/供给型/断言型)
本示例展示了Java中函数式接口的使用,包括自定义和内置的函数式接口。通过方法引用,实现对字符串操作如转换大写、数值转换等,并演示了Function、Consumer、Supplier及Predicate四种主要内置函数式接口的应用。
14 1
|
8天前
|
Java
让星星⭐月亮告诉你,Java synchronized(*.class) synchronized 方法 synchronized(this)分析
本文通过Java代码示例,介绍了`synchronized`关键字在类和实例方法上的使用。总结了三种情况:1) 类级别的锁,多个实例对象在同一时刻只能有一个获取锁;2) 实例方法级别的锁,多个实例对象可以同时执行;3) 同一实例对象的多个线程,同一时刻只能有一个线程执行同步方法。
9 1
|
13天前
|
Java 编译器
在Java中,关于final、static关键字与方法的重写和继承【易错点】
在Java中,关于final、static关键字与方法的重写和继承【易错点】
19 5
|
13天前
|
Java 语音技术 容器
java数据结构泛型
java数据结构泛型
23 5
|
10天前
|
存储 Java 编译器
Java集合定义其泛型
Java集合定义其泛型
14 1