2013-01-10 115 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