2013-01-10 158 views
1

創建一個具有泛型類型T的類。定義第二個類型參數的類的子類,稱爲V。使用該對象從兩個類中調用方法。使用不同對象創建2個對象泛型和子類型

這是問題。

如果有人可能會想,這不是作業。我正在做一些Java實踐練習。我不明白如何「用不同的對象創建2個對象」。誰能幫忙?

class Gen<T> 
{ 
    T obj; 
    Gen(T ob) 
    { 
    obj = ob; 
    } 

T getobj() 
    { 
    return obj; 
    } 
} 

class Gen2<T, V> extends Gen<T> 
{ 
    V obj1; 
    Gen2(T ob,V ob1) 
    { 
    super(ob); 
    obj1 = ob1; 
    } 

V getobj1() 
{ 
    return obj1; 
} 

} 

public class Ch2Lu4Ex3 
{ 
    public static void main(String args[]) 
    { 
     Gen2<String,String> g = new Gen2<String,String>("robin","raj");   

     System.out.println(g.getobj1()); 
     System.out.println(g.getobj()); 
    } 
} 
+3

我不明白的問題是什麼在這裏創建2個對象。爲什麼你不能提供不同的通用參數? –

+0

那麼我做了所有問題的要求,但最後一行讓我困惑。 – Robin

回答

2

嗯,你可以做這樣的事情:

Gen<Integer> gen1 = new Gen<Integer>(10); 
Gen2<Integer> gen2 = new Gen2<Integer,String>(10,"Hello"); 

或者你可以將它們結合起來,因爲它們是在同一層次。

Gen<Integer> gen1 = new Gen2<Integer,String>(10,"Hello"); 
+0

非常感謝:) – Robin

1

你問這樣的事情:

Gen2<String,String> g = new Gen2<String,String>("robin","raj"); 
Gen2<Integer,Integer> h = new Gen2<Integer,Integer>(1, 2); 

還是我誤解你的問題?

+0

我不明白最後一行,但你可能是正確的:)謝謝! – Robin

+0

'g'和'h'都是'Gen2'的實例,但它們使用的是不同的通用類型。對於'g'實例,'T'和'V'類型的類型爲'String'。相比之下,'T'和'V'的類型都是'Integer'。 – matsev

3

問題的最後一部分:

與不同的對象

Gen2<Integer,String> inst = new Gen2<Integer,String>(1, "robin"); 
+0

你能解釋一下嗎? – Robin

+1

@Robin 你基本上是通過兩種不同的對象類型作爲泛型類型參數(一個是整數,另一個是字符串) – PermGenError

+0

非常感謝你:) – Robin