【泛型】
起因:JDK1.4之前类型不明确
<1>装入集合的类型都被当做Object对待,从而失去自己的实际类型。
<2>从集合中取出时往往需要转型,效率低,且很容易出错。
解决办法:
<1>在定义集合的时候同时定义集合中对象的类型
----实例程序:
List<String> c = new ArrayList<String>();
//原本传入的强制转换为Object类型,这里不需要了,直接限定为String类型
c.add("aa");
c.add("bb");
c.add("cc");
for(int i=0;i<c.size();i++){
String c = c.get(i);
System.out.println(c);
}
好处:增强程序的可读性和稳定性
【普通泛型】
package com.company.section1;
public class Client {
//工资低于2500元的上斑族并且站立的乘客车票打8折
public static <T extends Staff & Passenger> void discount(T t){
if(t.getSalary()<2500 && t.isStanding()){
System.out.println("恭喜你!您的车票打八折!");
}
}
public static void main(String[] args) {
discount(new Me());
}
}
//职员
interface Staff{
//工资
public int getSalary();
}
//乘客
interface Passenger{
//是否是站立状态
public boolean isStanding();
}
class Me implements Staff,Passenger{
public boolean isStanding(){
return true;
}
public int getSalary() {
return 2000;
}
}
public class Client {
//工资低于2500元的上斑族并且站立的乘客车票打8折
public static <T extends Staff & Passenger> void discount(T t){
if(t.getSalary()<2500 && t.isStanding()){
System.out.println("恭喜你!您的车票打八折!");
}
}
//这里使用泛型编程,因为传入的参数有两种类型:int,boolean,这样可以实现不同数据类型的操作。
public static void main(String[] args) {
discount(new Me());
}
}
//职员
interface Staff{
//工资
public int getSalary();
}
//乘客
interface Passenger{
//是否是站立状态
public boolean isStanding();
}
class Me implements Staff,Passenger{
public boolean isStanding(){
return true;
}
public int getSalary() {
return 2000;
}
}