Java 自定义泛型
2023-12-22 12:45:20
1、接口的泛型
-
例如List<数据类型>,在创建接口的时候可以通过传不同的类型,进行使用。
如果需要对一些类型进行一些相同的类似于增删改查的操作,那么可以用泛型来简化,只需要将需要操作的类型传入即可。
-
需要注意的是泛型大多用一个字符来表示,也相当于是约定俗成的,太多的话会让人感觉是一个类,即使代码没问题,也会让看的人产生错觉。
public interface Dao<T> {
? ?public void add(T t);
? ?public void remove(T t);
? ?public void update(T t);
? ?public void fiid(T t);
}
2、类的泛型
-
根接口中一样
public class DaoImpal<T> implements Dao<T>{
? ?@Override
? ?public void add(T t) {
? ? ? ?System.out.println("增加了一个" + t);
? }
?
? ?@Override
? ?public void remove(T t) {
? ? ? ?System.out.println("删除了一个"+ t);
? }
?
? ?@Override
? ?public void update(T t) {
? ? ? ?System.out.println("修改了一个" + t);
? }
? ?@Override
? ?public void fiid(T t) {
? ? ? ?System.out.println("找到了一个" + t);
? }
}
3、方法的泛型
-
相当于是设置了一个泛型变量,变量通过传入的数据类型进行修改。
-
用的不多
public class Method {
// 变量 返回值 传入的参数类型来决定T泛型到底是什么
public static <T> List<T> getList(T[] ts){
List<T> list = new ArrayList<T>();
for(T t : ts){
list.add(t);
}
return list;
}
public static void main(String[] args) {
String[] s = {"a", "b", "c", "d", "e", "f"};
List<String> list = Method.getList(s);
System.out.println(list);
}
}
4、通配符
可以用 ? 来匹配所有类型的数据。
-
注意:? 的范围太大,有时候可能会产生一些多余的问题,所以也可以在 ?的基础上加一些限制,通过extends 和 super来限制
-
不常用,但是要能读懂代码。
/***
* 传过来的参数必须是动物List
* ? extends 类 泛型必须是XXX的子类或者本身
*/
public void wei(List<? extends Animal> anilist){
for(Object a : anilist){
Animal ani = (Animal)a;
ani.eat();
}
}
/***
* 传过来的参数必须是动物List
* ? super 类 泛型必须是XXX的父类或者本身
*/
public void wei2(List<? super BoSiCat> anilist){
for(Object a : anilist){
Animal ani = (Animal)a;
ani.eat();
}
}
文章来源:https://blog.csdn.net/qq_64468032/article/details/135150096
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!