[問題] 有關generics泛型的函式參數super用法

看板java作者 (KK)時間15年前 (2011/03/03 18:51), 編輯推噓0(005)
留言5則, 2人參與, 最新討論串1/2 (看更多)
小弟最近在學java觀念上遇到了些難題, 想請教各位一個問題: 在泛型函式中為了要使class Write裡的setName(T)可以不為read-only, class test裡的WriteName函式把它參數形式改為(Write<? super String>), 使得在寫入name時可以編譯通過, 但是我想不懂的是我又加了一行setName(new Object())它就編不過, 我在想我邏輯是不是又亂了,好不容易稍微看懂為啥要用super取代extends了, 沒想到又卡住了...Orz,我是不是觀念認知出了些差錯? //========================================= class Write<T> { private T name; public Write(T value) { name = value; } public void setName(T a_name) { name = a_name; } public T getName() { return name; } } public class test { public static void main(String[] args) { test t= new test(); t.WriteName(new Write("Ha")); t.WriteName(new Write(new Object())); } public void WriteName(Write<? super String> value) { //value.setName(new Object()); //compile error value.setName("Test2"); System.out.println(value.getName()); } } //========================================= -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.104.76.226

03/03 20:01, , 1F
在泛型中,object不是所有型別的super type...
03/03 20:01, 1F

03/03 20:53, , 2F
非常感謝~我會再去瞭解
03/03 20:53, 2F

03/03 21:05, , 3F
請問你說的在泛型中,object不是all types的super type
03/03 21:05, 3F

03/03 21:09, , 4F
連結中我看不太出來哪裡是object不是所有型別的super type..
03/03 21:09, 4F

03/03 23:41, , 5F
我說錯了...XD
03/03 23:41, 5F
文章代碼(AID): #1DRtAMX_ (java)
文章代碼(AID): #1DRtAMX_ (java)