需求: 把一个集合中元素全部转成大写。
import java.util.ArrayList; public class Demo1 { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); //<String> 表示该容器只能存储字符串类型 的数据。 list.add("aa"); list.add("bb"); list.add("cc"); for(int i = 0 ; i < list.size() ; i++){ String str = list.get(i); System.out.println("大写:"+ str.toUpperCase()); } //MyUtil.print(list); //ArrayList<String> list2 = MyUtil.getList(); } } 运行结果: 大写:AA 大写:BB 大写:CC 需求: 定义一个方法可以接收任意类型的参数,而且返回值类型必须 要与实参的类型一致。
自定义泛型就是一个数据类型的占位符或者是一个数据类型的变量。 方法上自定义泛型: 修饰符 <声明自定义的泛型>返回值类型 函数名(使用自定义泛型 ...){ } 在泛型中不能使用基本数据类型,如果需要使用基本数据类型,那么就使用基本数据类型对应的包装类型。 byte----> Byte short---> Short int----> Integer long----> Long double ----> Double float -----> Float boolean-----Boolean char-------》 Character 方法泛型注意的事项: 1. 在方法上自定义泛型,这个自定义泛型的具体数据类型是在调用该 方法的时候传入实参时确定具体的数据类型的。 2. 自定义泛型只要符合标识符 的命名规则即可, 但是自定义泛型我们一般都习惯使用一个大写字母表示。 T Type E Element
public class Demo2 { public static void main(String[] args) { String str = getData("abc"); Integer i = getData(123); } public static <abc>abc getData(abc o){ System.out.println(o.toString()); return o; } } 运行结果: abc 123
interface Dao<T>{ public void print(T t); } public class Demo4<T> implements Dao<T> { public static void main(String[] args) { Demo4<String> d = new Demo4<String>(); d.print("hello"); d.print("world"); } public void print(T t){ System.out.println(t); } } 运行结果: hello world
import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; public class Demo5 { public static void main(String[] args) { ArrayList<Integer> list1 = new ArrayList<Integer>(); ArrayList<Number> list2 = new ArrayList<Number>(); HashSet<String> set = new HashSet<String>(); Short a=0; //print(a); //getData(set); } //泛型的上限 public static void getData(Collection<? extends Number> c){ } //泛型的下限 public static void print(Collection<? super Integer> c){ } } 如果将注释去掉,将会报错
