博客
关于我
java-泛型
阅读量:796 次
发布时间:2023-03-28

本文共 2964 字,大约阅读时间需要 9 分钟。

泛型在Java中的应用

泛型(Generic)是Java的一项强大的功能,它允许在定义类、接口或方法时,引入类型参数。通过这种方式,代码可以在不实际创建新类型的情况下,灵活地控制类型的具体限制,从而实现更灵活的类型管理。

泛型的基本概念

泛型的核心思想是“参数化类型”。与方法中的参数类似,类型参数可以在定义和使用时分别指定。例如,在定义一个泛型方法时,可以定义方法的参数为某种类型(类型参数),而在调用时,可以传入具体的实现类。

泛型类

泛型类是最常见的泛型应用形式。通过在类定义中引入类型参数,类的属性和方法可以接受不同类型的数据。

代码示例

package com.lwh;
public class User
{
private T var;
private F var1;
public void setVar(T var) {
this.var = var;
}
public void setVar1(F var1) {
this.var1 = var1;
}
void show() {
System.out.println(var);
System.out.println(var1);
}
public static void main(String[] args) {
User
user = new User<>();
user.setVar(2);
user.setVar1("lwh");
user.show();
}
}

在这个例子中,User类定义了两个类型参数 TF。类的实例可以根据具体需求选择传递的类型,从而实现灵活的类型管理。

泛型类的引用

在引用传递时,泛型类的类型必须匹配。如果需要在不确定类型的情况下引用,可以使用通配符?

代码示例

package com.lwh;
public class People
{
private T var;
private T var1;
public People(T var, T var1) {
this.var = var;
this.var1 = var1;
}
void show() {
System.out.println(var);
System.out.println(var1);
}
public static People
showPeople(People
people) {
return people;
}
}
class PeopleDemo {
public static void main(String[] args) {
People
p = new People<>("lqh", 12);
People people = People.showPeople(p);
people.show();
}
}

在这个例子中,通配符?允许在引用传递时灵活处理类型。

受限泛型

在引用传递中,泛型操作可以设置类型范围上限和下限。上限使用extends关键字,表示类型参数可以是指定类型或其子类;下限使用super关键字,表示类型参数可以是指定类型或其父类。

代码示例

public class MyClass
{
// 类成员
}
MyClass
obj = new MyClass<>();

泛型接口

从JDK 1.5开始,泛型也可以定义在接口上。接口的泛型定义与类的泛型定义非常相似。

代码示例

package com.lwh;
public interface Food
{
public final int AGE = 12;
T method(T t);
default F method1(F f) {
System.out.println("我是默认方法1");
return f;
}
default G methods2(G g) {
System.out.println("我是默认方法2");
return g;
}
static void methods3() {
System.out.println("我是静态方法");
}
}
public class Meat
implements Food
{
@Override
public T method(T t) {
System.out.println("niubi");
return t;
}
public static void main(String[] args) {
Food food = new Meat();
System.out.println(Food.AGE);
System.out.println(food.method("lwh"));
System.out.println(food.method1(23));
food.methods2(23.3);
Food.methods3();
}
}

泛型方法

泛型方法可以在类中定义,不一定要求类本身是泛型类。

代码示例

public class Util
{
public T method(T t) {
System.out.println("niubi");
return t;
}
}
public class TestUtil {
public static void main(String[] args) {
Util
util = new Util<>();
System.out.println("hello " + util.method("world"));
}
}

总结

泛型是一种强大的技术,它允许在不实际创建新类型的情况下,灵活地管理类型。通过定义类、接口和方法的类型参数,可以实现更灵活的类型管理和代码复用。在实际开发中,合理使用泛型可以显著提高代码的可维护性和可扩展性。

转载地址:http://rbhfk.baihongyu.com/

你可能感兴趣的文章
Objective-C实现图层混合算法(附完整源码)
查看>>
Objective-C实现图片erosion operation侵蚀操作算法(附完整源码)
查看>>
Objective-C实现图片的放大缩小(附完整源码)
查看>>
Objective-C实现图片腐蚀(附完整源码)
查看>>
Objective-C实现图片膨胀(附完整源码)
查看>>
Objective-C实现图的邻接矩阵(附完整源码)
查看>>
Objective-C实现圆球的表面积和体积(附完整源码)
查看>>
Objective-C实现在Regex的帮助下检查字谜算法(附完整源码)
查看>>
Objective-C实现均值滤波(附完整源码)
查看>>
Objective-C实现埃拉托斯特尼筛法算法(附完整源码)
查看>>
Objective-C实现域名解析(附完整源码)
查看>>
Objective-C实现域名转IP(附完整源码)
查看>>
Objective-C实现培根密码算法(附完整源码)
查看>>
Objective-C实现基于 LIFO的堆栈算法(附完整源码)
查看>>
Objective-C实现基于 LinkedList 的添加两个数字的解决方案算法(附完整源码)
查看>>
Objective-C实现基于opencv的抖动算法(附完整源码)
查看>>
Objective-C实现基于事件对象实现线程同步(附完整源码)
查看>>
Objective-C实现基于信号实现线程同步(附完整源码)
查看>>
Objective-C实现基于文件流拷贝文件(附完整源码)
查看>>
Objective-C实现基于模板的双向链表(附完整源码)
查看>>