import java.util.ArrayList;
public class Demo236Genericity1 {
public static void main(String[] args) {
ArrayList<Object> list = new ArrayList<>();
list.add("hello");
list.add("world");
list.add(1);
list.add(2.5);
list.add(true);
// 获取元素中为String类型的字符串长度
for (Object o : list) {
String s = (String) o;
System.out.println(s.length());
}
}
}
2.什么时候确定类型
new对象的时候确定类型
3.含有泛型的类
java复制代码
package S85Genericity;
import java.util.Arrays;
public class MyArrayList <E>{
// 定义一个数组,充当ArrayList底层的数组,长度直接规定为10
Object[] obj = new Object[10];
// 定义size,代表集合元素个数
int size;
// 定义一个add方法,参数类型需要和泛型类型保持一致,数据类型为E,变量名随意
public boolean add(E e){
obj[size] = e;
size++;
return true;
}
// 定义一个get方法。根据索引获取元素
public E get(int index){
return (E) obj[index];
}
@Override
public String toString() {
return Arrays.toString(obj);
}
}
java复制代码
package S85Genericity;
public class Demo238Test {
public static void main(String[] args) {
MyArrayList<String> list = new MyArrayList<>();
list.add("一切都会好的");
list.add("我一直相信");
System.out.println(list); // 直接输出对象名,默认调用toString
// [一切都会好的, 我一直相信, null, null, null, null, null, null, null, null]
System.out.println("------------------------------------------------------------------------");
MyArrayList<Integer> list1 = new MyArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
System.out.println(list1);
// [1, 2, 3, null, null, null, null, null, null, null]
Integer ele = list1.get(1);
System.out.println(ele); // 2
}
}
4.含有泛型的方法
① 格式:
修饰符 <E> 返回值类型 方法名(E e)
② 什么时候确定类型
调用的时候确定类型
③ 示例
java复制代码
import java.util.ArrayList;
public class ListUtils {
// 定义一个静态方法addAll,添加多个集合的元素
// 可变参数: E...e 可变参类型
// E是声明不是返回值类型,还要另外传参数类型
public static <E> void addAll(ArrayList<E> list,E ...e){
// 遍历数组
for (E element : e) {
list.add(element);
}
}
}
java复制代码
public class Demo238Test {
public static void main(String[] args) {
MyArrayList<String> list = new MyArrayList<>();
list.add("一切都会好的");
list.add("我一直相信");
System.out.println(list); // 直接输出对象名,默认调用toString
// [一切都会好的, 我一直相信, null, null, null, null, null, null, null, null]
System.out.println("------------------------------------------------------------------------");
MyArrayList<Integer> list1 = new MyArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
System.out.println(list1);
// [1, 2, 3, null, null, null, null, null, null, null]
Integer ele = list1.get(1);
System.out.println(ele); // 2
}
}