1 //define package 2 package com.kai.li; 3 4 //import packages and classes 5 import java.util.List; 6 import java.util.ArrayList; 7 8 //about collection 9 //joined in simple list 10 //client 11 public class Text2{ 12 public static void main(String[] args){ 13 System.out.println("Following is the first question."); 14 List<Outter> list=new ArrayList<Outter>(); 15 Outter o1=new Outter(); 16 Outter o2=new Outter(); 17 Outter o3=new Outter(); 18 list.add(o1); 19 list.add(o2); 20 list.add(o3); 21 System.out.println(list); 22 Outter[] ox=new Outter[list.size()]; 23 ox=list.toArray(ox); 24 System.out.println(ox); 25 for(Outter lemp:list){ 26 System.out.println(lemp); 27 } 28 Outter o4=list.get(0); 29 Outter o5=list.get(1); 30 Outter o6=list.get(2); 31 System.out.println(o4+" "+o5+" "+o6); 32 Outter.ShapePara<Integer,Double> s1=()->System.out.println("hi...hi..."); 33 s1.toS(); 34 try{ 35 36 //A text of linked operate and implements by myself 37 38 s1.link1().link2().link3(); 39 40 }catch(Exception e){ 41 System.out.println("This a text about try catch."); 42 } 43 Outter.ShapePara<Integer,Double> s2=o4.new Circle<Integer,Double>(10,12.0,12.0); 44 System.out.println(); 45 //following are the lambda and linked,so ,you can add,then div,then sub...... shortly,following equals new ChildrenName(); 46 Outter.ShapePara<Integer,Double> s3=()->{}; 47 s3.link1().link2().link3(); 48 } 49 } 50 51 //interface and the class implenments it parts 52 //following is the first interface part 53 //Outter class 54 class Outter{ 55 interface ShapePara<T1,T2>{ 56 public void haha(); 57 default public void toS(){ 58 System.out.println("I am sorry,I can't implements the generic's operate."); 59 } 60 default public ShapePara<T1,T2> link1(){ 61 62 toS(); 63 System.out.println(this+":This is the first object operate."); 64 return this; 65 } 66 default public ShapePara<T1,T2> link2(){ 67 68 toS(); 69 System.out.println(this+":This is the second object operate."); 70 return this; 71 } 72 default public ShapePara<T1,T2> link3(){ 73 74 toS(); 75 System.out.println(this+":This is the third object operate."); 76 return this; 77 } 78 } 79 class Circle<T1,T2> implements ShapePara<T1,T2>{ 80 public T1 radius; 81 private T2 x; 82 protected T2 y; 83 Circle(T1 radius){ 84 this.radius=radius; 85 } 86 Circle(T1 radius,T2 x,T2 y){ 87 this(radius); 88 this.x=x; 89 this.y=y; 90 } 91 public void setX(T2 x){ 92 this.x=x; 93 } 94 public T2 getY(){ 95 return y; 96 } 97 public T1 getRadius(){ 98 return radius; 99 } 100 public void setRadius(T1 radius){ 101 this.radius=radius; 102 } 103 public void setCenter(T2 x,T2 y){ 104 this.setX(x); 105 this.y=y; 106 } 107 public void haha(){} 108 } 109 //I can't implements the operate of getArea and getCircumference with the generic 110 class Operate{ 111 public double getArea(double radius){ 112 return Math.PI*Math.pow(radius,2); 113 } 114 public double getCircumference(double radius){ 115 return 2*Math.PI*radius; 116 } 117 } 118 }