25.泛型

时间:2025-02-21 06:59:24
package text.text02; import java.util.*; /* 泛型接口: 定义一个接口时,数据类型不确定时,就可以定义带有泛型的接口。 格式:修饰符 interface 接口名 <类型>{ } 泛型接口的使用方法: 方法1:实现类给出具体的类型 方法2:实现类延续泛型,创建对象时再确定 */ public class text33 { public static void main(String[] args) { //方法1:实现类给出具体的类型,创建对象时不用确认数据类型 MyArrayList1 list1 = new MyArrayList1(); list1.add("aaa"); list1.add("bbb"); list1.add("ccc"); //(123);由于在实现类中确认的是字符串类型的,因此添加Integer类型的会报错 System.out.print("方法1:实现类给出具体的类型,创建对象时不用确认数据类型:"); for (int i = 0; i < list1.size(); i++) { System.out.print(list1.get(i) + " "); //aaa bbb ccc } System.out.println(); //方法2:实现类延续泛型,创建对象时再确定 MyArrayList2<String> list2 = new MyArrayList2<>(); list2.add("ddd"); list2.add("eee"); list2.add("fff"); //(123);由于在创建对象时确定了是字符串类型的,因此添加Integer类型的会报错 System.out.print("方法2:实现类延续泛型,创建对象时再确定:"); for (int i = 0; i < list2.size(); i++) { System.out.print(list2.get(i) + " "); //ddd eee fff } } } //方法1:实现类给出具体的类型 class MyArrayList1 implements List<String> { //List是一个Java已经定义好的为泛型的接口 :public interface List<E> extends Collection<E> Object[] arr = new Object[10]; int size; @Override public int size() { return size; } @Override public boolean isEmpty() { return false; } @Override public boolean contains(Object o) { return false; } @Override public Iterator<String> iterator() { return null; } @Override public Object[] toArray() { return new Object[0]; } @Override public <T> T[] toArray(T[] a) { return null; } @Override public boolean add(String s) { arr[size] = s; size++; return true; } @Override public boolean remove(Object o) { return false; } @Override public boolean containsAll(Collection<?> c) { return false; } @Override public boolean addAll(Collection<? extends String> c) { return false; } @Override public boolean addAll(int index, Collection<? extends String> c) { return false; } @Override public boolean removeAll(Collection<?> c) { return false; } @Override public boolean retainAll(Collection<?> c) { return false; } @Override public void clear() { } @Override public String get(int index) { return (String) arr[index]; } @Override public String set(int index, String element) { return null; } @Override public void add(int index, String element) { } @Override public String remove(int index) { return null; } @Override public int indexOf(Object o) { return 0; } @Override public int lastIndexOf(Object o) { return 0; } @Override public ListIterator<String> listIterator() { return null; } @Override public ListIterator<String> listIterator(int index) { return null; } @Override public List<String> subList(int fromIndex, int toIndex) { return null; } } //方法2:实现类延续泛型,创建对象时再确定 class MyArrayList2<E> implements List<E> { Object[] arr = new Object[10]; int size; @Override public int size() { return size; } @Override public boolean isEmpty() { return false; } @Override public boolean contains(Object o) { return false; } @Override public Iterator<E> iterator() { return null; } @Override public Object[] toArray() { return new Object[0]; } @Override public <T> T[] toArray(T[] a) { return null; } @Override public boolean add(E s) { arr[size] = s; size++; return true; } @Override public boolean remove(Object o) { return false; } @Override public boolean containsAll(Collection<?> c) { return false; } @Override public boolean addAll(Collection<? extends E> c) { return false; } @Override public boolean addAll(int index, Collection<? extends E> c) { return false; } @Override public boolean removeAll(Collection<?> c) { return false; } @Override public boolean retainAll(Collection<?> c) { return false; } @Override public void clear() { } @Override public E get(int index) { return (E) arr[index]; } @Override public E set(int index, E element) { return null; } @Override public void add(int index, E element) { } @Override public E remove(int index) { return null; } @Override public int indexOf(Object o) { return 0; } @Override public int lastIndexOf(Object o) { return 0; } @Override public ListIterator<E> listIterator() { return null; } @Override public ListIterator<E> listIterator(int index) { return null; } @Override public List<E> subList(int fromIndex, int toIndex) { return null; } //List是一个Java已经定义好的为泛型的接口 :public interface List<E> extends Collection<E> }