2014-04-20 90 views
-1

我對課程有些麻煩。我必須承認我搜索得不好,但最簡單的谷歌搜索並沒有讓我得到正確的答案。由於我不明白爲什麼會出現這個問題,所以我想我會請求解釋一下。反思和泛型

我有以下代碼(或至少是與自己相關的代碼):

public class someClass { 
     private final Class<? extends TileGeneric> tileClass; 
     public someClass(Class<? extends TileGeneric> clazz) { 
      // Some more checks go here, but it's about the class, not this code 
      tileClass = clazz; 
     } 

     public TileGeneric getInstance(World world) { 
      if(tileClass != null) { 
       TileGeneric tile = ReflectionUtil.getInstance(tileClass, null, new Object[] {}); // This method is not relevant, but what you should know is that no compile errors occur here 
       if(tile == null) 
        tile = ReflectionUtil.getInstance(tileClass, World.class, world); // Here does a compile occur: (see further details below this code) 
      } 
      return null; 
     } 
    } 

好吧,這或多或少是我班的最重要的代碼問題所在。我得到的編譯錯誤是在第二個ReflectionUtil.getInstance調用:​​

所以錯誤在於我所假設的是由於這些塊,但我完全不知道,如果這甚至是問題。非常奇怪的是,第一個電話沒有錯誤,這是真正打破我的想法。

如果已經有我找不到的解釋,請將我鏈接到它。我非常感謝所有幫助,並且真的想知道爲什麼會發生這種情況,所以我可以在將來使其無效。

回答

1

你的方法需要一個類的數組,Class[]作爲它的第二個參數。你只是通過一個Class的論點。將你的參數包裹在一個數組中。

tile = ReflectionUtil.getInstance(tileClass, new Class<?>[] {World.class}, world); 
+0

嗯,這真的很尷尬。對不起:S – engineercoding