Java 泛型和子类型

Java 泛型和子类型,java,generics,Java,Generics,创建一个泛型类型为T的类。定义第二个类型参数的类的子类,称为V。使用对象从两个类调用方法。使用不同的对象创建两个对象 这就是问题所在 如果有人认为这不是家庭作业的话。我正在做一些java论文练习。我不明白如何“用不同的对象创建两个对象”。有人能帮忙吗 class Gen<T> { T obj; Gen(T ob) { obj = ob; } T getobj() { return obj; } } class Gen2<T, V

创建一个泛型类型为
T
的类。定义第二个类型参数的类的子类,称为
V
。使用对象从两个类调用方法。使用不同的对象创建两个对象

这就是问题所在

如果有人认为这不是家庭作业的话。我正在做一些java论文练习。我不明白如何“用不同的对象创建两个对象”。有人能帮忙吗

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());
    }
 }
class-Gen
{
T-obj;
总务(产科)
{
obj=ob;
}
T getobj()
{
返回obj;
}
}
类Gen2扩展了Gen
{
V-obj1;
第二代(T ob,V ob1)
{
超级(ob);
obj1=ob1;
}
V getobj1()
{ 
返回obj1;
}
}
公共类Ch2Lu4Ex3
{
公共静态void main(字符串参数[])
{
Gen2 g=新的Gen2(“罗宾”、“拉吉”);
System.out.println(g.getobj1());
System.out.println(g.getobj());
}
}

好吧,你可以做如下事情:

Gen<Integer> gen1 = new Gen<Integer>(10);
Gen2<Integer> gen2 = new Gen2<Integer,String>(10,"Hello");
gen1=新的Gen(10);
Gen2 Gen2=新的Gen2(10,“你好”);
或者您可以将它们合并,因为它们位于同一层次结构上

Gen<Integer> gen1 = new Gen2<Integer,String>(10,"Hello");
gen1=新的Gen2(10,“你好”);

好吧,你可以做如下事情:

Gen<Integer> gen1 = new Gen<Integer>(10);
Gen2<Integer> gen2 = new Gen2<Integer,String>(10,"Hello");
gen1=新的Gen(10);
Gen2 Gen2=新的Gen2(10,“你好”);
或者您可以将它们合并,因为它们位于同一层次结构上

Gen<Integer> gen1 = new Gen2<Integer,String>(10,"Hello");
gen1=新的Gen2(10,“你好”);

您是否要求:

Gen2<String,String> g = new Gen2<String,String>("robin","raj");
Gen2<Integer,Integer> h = new Gen2<Integer,Integer>(1, 2);  
gen2g=新的Gen2(“罗宾”、“拉吉”);
Gen2 h=新的Gen2(1,2);

还是我误解了你的问题?

你是在问这样的问题:

Gen2<String,String> g = new Gen2<String,String>("robin","raj");
Gen2<Integer,Integer> h = new Gen2<Integer,Integer>(1, 2);  
gen2g=新的Gen2(“罗宾”、“拉吉”);
Gen2 h=新的Gen2(1,2);

还是我误解了你的问题?

问题的最后一部分:

使用不同的对象创建两个对象

gen2inst=新的Gen2(1,“罗宾”);

问题的最后一部分:

使用不同的对象创建两个对象

gen2inst=新的Gen2(1,“罗宾”);

我不明白这里有什么问题。为什么你不能提供不同的通用参数呢?好吧,我做了问题要求的所有事情,但最后一行让我困惑。我不明白这里的问题是什么。为什么你不能只提供不同的泛型参数呢?我做了问题要求的所有事情,但最后一行让我困惑。@Robin你基本上是在传递两个不同的abject类型作为泛型类型参数(一个是整数,另一个是字符串)@Robin是的,引用的问题措辞非常糟糕。“泛型类型参数”是一个更好的措辞。@Robin你基本上是在传递两种不同的abject类型作为泛型类型参数(一个是整数,另一个是字符串)@Robin是的,引用的问题措辞非常糟糕。“泛型类型参数”是一个更好的措辞。
g
h
都是
Gen2
的实例,但是它们使用不同的泛型类型。对于
g
实例,
T
V
类型具有type
String
。相比之下,
T
V
都属于
h
Integer
类型。
g
h
都是
Gen2
的实例,但它们使用的泛型不同。对于
g
实例,
T
V
类型具有type
String
。相比之下,
T
V
都属于
Integer
类型,用于
h