看板 java 關於我們 聯絡資訊
小弟最近在學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
pico2k:在泛型中,object不是所有型別的super type... 03/03 20:01
pankk:非常感謝~我會再去瞭解 03/03 20:53
pankk:請問你說的在泛型中,object不是all types的super type 03/03 21:05
pankk:連結中我看不太出來哪裡是object不是所有型別的super type.. 03/03 21:09
pico2k:我說錯了...XD 03/03 23:41