长春cms建站,广东建筑企业100强,重庆建设工程管理网,wordpress 无法显示首先我们来了解一下什么是泛型#xff0c;泛型的作用又是什么。
泛型的形式是
ArrayListObject objects new ArrayList();
这里的Object这个就是泛型#xff0c;添加泛型的作用又是什么呢#xff0c;它可以限制添加对象的类型#xff0c;比如A…首先我们来了解一下什么是泛型泛型的作用又是什么。
泛型的形式是
ArrayListObject objects new ArrayList();
这里的Object这个就是泛型添加泛型的作用又是什么呢它可以限制添加对象的类型比如AarryLsitObject则ArrayList只能存放Object类型的元素这个好处是什么当我们设置泛型时可以避免一些传入对象类型不对的情况接下来我们示范一些实际案例
要求ArraryList当中的元素必须是Person
首先我们来看一下没有有定义泛型的情况
import java.util.ArrayList;public class Array {SuppressWarnings({all})public static void main(String[] args) {ArrayList arrayList new ArrayList();arrayList.add(new Preson(jack, 18));arrayList.add(new Preson(monkey, 18));arrayList.add(new Cat(mack, 23));System.out.println(arrayList);}
}class Preson{public String name;public int age;public Preson(String name, int age) {this.name name;this.age age;}Overridepublic String toString() {return Preson{ name name \ , age age };}
}class Cat{public String name;public int age;public Cat(String name, int age) {this.name name;this.age age;}Overridepublic String toString() {return Cat{ name name \ , age age };}
}
我们发现添加Cat类型的对象也是可以添加上去的这里就不符合我们添加对象的限制当我们
添加一下泛型时看一下是否能限制不符合要求对象的加入。 这里我们发现当我们添加泛型之后我们发现当我们想添加Cat类型的对象的时候我们发现该语句报错了这就是泛型的作用。
泛型的作用也不止于此它还可以应用在方法当中即泛型方法 class PersonE { public Person(E s) {//E 也可以是参数类型 this.s s; } } 这里就是我们的泛型类和泛型构造器E是通过你传入的对象类型自动进行替换如果传入的是String类型则这个E就是String类型依次类推 public E f() {// 返回类型使用 E return s; } public class Array {SuppressWarnings({all})public static void main(String[] args) {Dog1String wc new Dog1(旺财);System.out.println(wc.f());}
}
class Dog1E{public E s;public Dog1(E s) {this.s s;}public E f(){return s;}
} 这里我们发现E类型就变成了String类型。 当我们没有定义泛型时默认E为Object类型而且泛型最好不要与静态属性定义在一块因为二者是冲突的没有确定E类型的时候是无法进行初始化的泛型的定义不是一定要用E来表示也可以是其他的比如TSP等等泛型的定义必须是引用类型基本数据类型无法定义泛型。 泛型可以定义多个比如 class TigerS, T, M{ String name; S s; T t; M m; } 泛型的使用范围很广可以定义属性返回类型数组泛型定义的数组不能进行初始化因为类型不确定所以无法开辟空间接口等等泛型一旦被定义一个固定的引用类型即可传入本类或者其子类的类型。 接下来我们看一个泛型的实例演示 题目要求 代码展示 import java.util.ArrayList;
import java.util.Comparator;public class inclass {public static void main(String[] args) {SuppressWarnings({all})ArrayListEmployees employees new ArrayList();employees.add(new Employees(zzh, 50000, new MyData(2003, 9, 21)));employees.add(new Employees(hsx, 30000, new MyData(2002, 10, 11)));employees.add(new Employees(ksx, 30000, new MyData(2002, 10, 11)));System.out.println(employees);System.out.println(排序后的结果);employees.sort(new ComparatorEmployees() {SuppressWarnings({all})Overridepublic int compare(Employees emp1, Employees emp2) {if (!(emp1 instanceof Employees emp2 instanceof Employees)) {return 0;}//是否为Employees类或者子类如果不是则返回0退出比较int i emp1.getName().compareTo(emp2.getName());if (i ! 0){return i;}//比较姓名的字符大小int year emp1.getMydata().getYear() - emp2.getMydata().getYear();if (year ! 0){return year;}//在姓名相同的情况下比较年份大小int monuth emp1.getMydata().getMonuth() - emp2.getMydata().getMonuth();if (monuth ! 0){return monuth;}//在前两者都相同的情况下比较月份大小return emp1.getMydata().getDay() - emp2.getMydata().getDay();//前三者都相同的话再进行天数的判断}});System.out.println(employees);}
}class Employees{private String name;private int dale;private MyData mydata;public Employees(String name, int dale, MyData mydata) {this.name name;this.dale dale;this.mydata mydata;}public String getName() {return name;}public void setName(String name) {this.name name;}public int getDale() {return dale;}public void setDale(int dale) {this.dale dale;}public MyData getMydata() {return mydata;}public void setMydata(MyData mydata) {this.mydata mydata;}Overridepublic String toString() {return Employees{ name name \ , dale dale , mydata mydata };}
}class MyData{private int year;private int monuth;private int day;public MyData(int year, int monuth, int day) {this.day day;this.monuth monuth;this.year year;}public int getDay() {return day;}public void setDay(int day) {this.day day;}public int getMonuth() {return monuth;}public int getYear() {return year;}public void setYear(int year) {this.year year;}public void setMonuth(int monuth) {this.monuth monuth;}Overridepublic String toString() {return MyData{ year year , monuth monuth , day day };}
} 泛型的相关内容我们就聊到这里。