????????????????????????????????е???? Object getValue()??Date getValue()??? ??????????????????????????????????????????????????????????????????????????????????????????????дJava??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????“?????”?????飬????????????????
????????????????????????????
class A {
Object get(){
return new Object();
}
}
class B extends A {
@Override
Integer get() {
return new Integer(1);
}
}
public static void main(String[] args){
A a = new B();
B b = (B) a;
A c = new A();
a.get();
b.get();
c.get();
}
????????????????
17: invokespecial #5                  // Method com/suemi/network/test/A."<init>":()V
20: astore_3
21: aload_1
22: invokevirtual #6                  // Method com/suemi/network/test/A.get:()Ljava/lang/Object;
25: pop
26: aload_2
27: invokevirtual #7                  // Method com/suemi/network/test/B.get:()Ljava/lang/Integer;
30: pop
31: aload_3
32: invokevirtual #6                  // Method com/suemi/network/test/A.get:()Ljava/lang/Object;
????????????????????????????????get???????????JVM?????????????????????????????????д?????????
??????????????й??
??????Java?У??????????????????л?????????????????????????String?????Object??????Liskov?滻?????????????滻???????????Object?????????????????????String??????????κ??????????????????????????????????滻???????????????????????????????????????????????????????????????????????????????????滻?????????????????????????????????? String[]?????滻Object[]????????????????????????????????????????????????????List<String>??????滻??List<Object>???
???????????????????????????????????????????????????????????????????????????????????????????????????????? List<String>??List<Object>??????????????????String??????Object??????????????? List???????Collection????????????????????????μ??Щ????
??????????????????????????????????????????????????List<String>???????Collection<String> ??????????List<String>?????滻Collection<String>??????????????????????????????????? ????????????????????????????????? ?????滻???ж?????????????????????????Collection<? extends Number>??????????滻?????????????Collection???????????????List<? extends Number>??Set<? extends Number>??????????Number???????????????Collection<Double>?? Collection<Integer>??????????????ArrayList<Long>?? HashSet<Double>??????????滻Collection<? extends Number>??
??????????????а??????????????????????????????????????????????????????????????????????????????????и?????????????????List<Object>???List<?>???ɡ?List<String>?????滻List<?>?????????????????????????????
???????????????????????????????????????????????????????????????????List<String>???????????????????????????List??????????????????????????????????????????????????????????????????????????????
????????????е?????
??????????????
????// ???????????????ArrayList<String>??????????????????String?????????????????ж?
????if( arrayList instanceof ArrayList<String>)
????if( arrayList instanceof ArrayList<?>)    // ???
??????????÷????????
??????????????????????????????????????????Throwable???????????????????Throwable??????????????????????????????????????????????????????????????????????????????????ò??????????????catch???????????Object???????????????????catch????????????????????????
??????????catch???????÷????????
????public static <T extends Throwable> void doWork(Class<T> t){
????try{
????...
????}catch(T e){ //???????  T->Throwable?????????????????????????????
????...
????}catch(IndexOutOfBounds e){
????}
????}
???????????????????????
????Pair<String??Integer>[] table = new Pair<String??Integer>[10];// ???????
????Pair[] table = new Pair[10];// ????????
???????????????Я??????????????????????????????Pair<String??Integer>????????Pair<Object??Object>???飬???????Я???????????Pair????????????????????Я??????????????????????????????table[i]??????????????????????????????????
???????????е???????????????
???????????е???????????????????????÷?????????????????????????
????public class Test2<T> {
????public static T one;   //???????
????public static  T show(T one){ //???????
????return null;
????}
????}
??????????????е???????????????????????????????????????????????????????????????????á???????д????????????????????????????????????????????
????????????????
????class Pair<T>   {
????public boolean equals(T value) {
????return null;
????}
????}
??????????????????????????equals(Object o)??