蜂信物联FastBee平台https://gitee.com/beecue/fastbee
阿里资料开源项目https://gitee.com/vip204888
百度低代码前端框架https://gitee.com/baidu/amis
OpenHarmony开源项目https://gitcode.com/openharmony
仓颉编程语言开放项目https://gitcode.com/Cangjie
定义格式:
修饰符 class 类名<代表泛型的变量> { }
//此处T可以随便写为任意标识,创建的T,E,K,V等形式的的参数常用于表示泛型
public class Student<T> {
//value这个成员变量的类型为T,T的类型由外部指定
private T value;
public Student(T value) {
this.value = value;
}
public Student() {
}
//泛型方法getKey的返回值类型为T,T的类型由外部指定
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
}
2.2用泛型表示接口
泛型接口与泛型的定义及使用基本相同。
一般泛型接口常用于
生成器(generator)
中,生成器相对于对象工厂,是一种专门用来创建对象的类。
定义格式:
修饰符 interface 接口名<代表泛型的变量> { }
//定义一个泛型接口
public interface Student<T>{
public T ppp();
}
2.3用泛型表示方法
定义格式:
修饰符 <代表泛型的变量> 返回值类型 方法名(参数){ }
public class GenericMethods {
public <T> void f(T x){
System.out.println(x.getClass().getName());
}
}
2.4泛型通配符
当使用泛型类或者接口时,传递的数据中,泛型类型不确定,可以通过通配符<?>表示。但是一旦使用泛型的通配符后,只能使用Object类中的共性方法,集合中元素自身方法无法使用。
泛型的通配符:不知道使用什么类型来接收的时候,此时可以使用?,?表示未知通配符。
此时只能接受数据,不能往该集合中存储数据。
public class Hello {
public static void main(String[] args) {
List<String> name = new ArrayList<>();
List<Integer> age = new ArrayList<>();
List<Number> number = new ArrayList<>();
name.add("小皮皮");
age.add(20);
number.add(337);
generic(name);
generic(age);
generic(number);
}
private static void generic(List<?> data) {
System.out.println(data.get(0));
}
}
- 上界通配符:
<? extends ClassType>
该通配符为ClassType
的所有子类型。它表示的是任何类型都是ClassType
类型的子类。 - 下界通配符:
<? super ClassType>
该通配符为ClassType
的所有超类型。它表示的是任何类型的父类都是ClassType
。
// 泛型的上限:此时的泛型?,必须是Number类型或者Number类型的子类
public static void getElement1(Collection<? extends Number> coll){}
// 泛型的下限:此时的泛型?,必须是Number类型或者Number类型的父类
public static void getElement2(Collection<? super Number> coll){}
最后
按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。
学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。
“道路是曲折的,前途是光明的!”
识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。
“道路是曲折的,前途是光明的!”
[外链图片转存中…(img-uoXC7EPH-1725163066084)]
[外链图片转存中…(img-QM36r31K-1725163066085)]