1 import java.lang.reflect.Field; 2 import java.util.ArrayList; 3 import java.util.Collections; 4 import java.util.List; 5 6 /** 7 * @title 接口繼承多態的經典範例 8 * @author 做者:sunshine 9 * @date 建立時間:2016年7月6日 下午5:27:39 10 */ 11 12 //使用Comparable接口自定義排序 13 class Employee implements Comparable<Employee>{ 14 private int id; 15 private String name; 16 private int age; 17 public Employee(int id,String name,int age){ 18 this.id=id; 19 this.age=age; 20 this.name=name; 21 } 22 @Override 23 public int compareTo(Employee o){ 24 if(age>o.age){ 25 return 1; 26 }else if(age<o.age){ 27 return -1; 28 } 29 return 0; 30 } 31 @Override 32 public String toString(){ 33 StringBuilder sb=new StringBuilder(); 34 sb.append("員工的編號:"+id+","); 35 sb.append("員工的姓名"+ name+","); 36 sb.append("員工的年齡:"+age); 37 return sb.toString(); 38 } 39 40 } 41 42 class Students{ 43 private int id; 44 private String name; 45 private boolean male; 46 private double account; // 學生的賬戶餘額 47 //Get() Set() 48 public Students(){ 49 } 50 public void setId(int id){ 51 this.id=id; 52 } 53 public void setName(String name){ 54 this.name=name; 55 } 56 public void setMale(boolean male){ 57 this.male=male; 58 } 59 public void setAccount(double account){ 60 this.account=account; 61 } 62 public int getID(){ 63 return id; 64 } 65 public String getName(){ 66 return name; 67 } 68 public boolean getMale(){ 69 return male; 70 } 71 public double getAccount(){ 72 return account; 73 } 74 75 } 76 77 78 79 public class Hello4IEPExample { 80 81 public static void main(String[] args) { 82 // TODO Auto-generated method stub 83 /**************使用Comparable接口自定義比較**************/ 84 System.out.println("使用Comparable接口自定義比較,輸出年齡較大的類:"); 85 Employee employee=new Employee(1,"sunshine",68); 86 Employee employee1=new Employee(2,"habit",26); 87 Employee employee2=new Employee(3,"Liuliu",30); 88 String mm; 89 if (employee.compareTo(employee2) ==1){ 90 mm=employee.toString(); 91 } 92 else{ 93 mm=employee2.toString(); 94 } 95 96 System.out.println(mm); 97 98 /**************使用Comparable接口自定義排序**************/ 99 System.out.println("\n使用Comparable接口自定義排序:"); 100 List<Employee> list=new ArrayList<Employee>(); //以後瞭解相關功能 101 list.add(employee); 102 list.add(employee1); 103 list.add(employee2); 104 System.out.println("排序前:"); 105 for(Employee e : list){ 106 System.out.println(e); 107 } 108 109 System.out.println("按年齡排序後:"); 110 Collections.sort(list); 111 for(Employee e : list){ 112 System.out.println(e); 113 } 114 115 /**************動態設置類的私有域**************/ 116 System.out.println("\n動態設置類的私有域,不太明白,之後再看。。。。。。。。。。。。。。。。。"); 117 Students students=new Students(); 118 Class<?> clazz=students.getClass(); 119 System.out.println("類的標準名稱是:"+clazz.getCanonicalName()); 120 121 try { 122 // Field id=clazz.getDeclaredField("id"); 123 System.out.println("設置前的id是" + students.getID()); 124 125 } catch (SecurityException e) { 126 127 } 128 129 } 130 }
輸出結果:java
1 使用Comparable接口自定義比較,輸出年齡較大的類: 2 員工的編號:1,員工的姓名sunshine,員工的年齡:68 3 4 使用Comparable接口自定義排序: 5 排序前: 6 員工的編號:1,員工的姓名sunshine,員工的年齡:68 7 員工的編號:2,員工的姓名habit,員工的年齡:26 8 員工的編號:3,員工的姓名Liuliu,員工的年齡:30 9 按年齡排序後: 10 員工的編號:2,員工的姓名habit,員工的年齡:26 11 員工的編號:3,員工的姓名Liuliu,員工的年齡:30 12 員工的編號:1,員工的姓名sunshine,員工的年齡:68 13 14 動態設置類的私有域,不太明白,之後再看,Pages222。。。。。。。。。。。。。。。。。 15 類的標準名稱是:Students 16 設置前的id是0