25.泛型
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>
}