在Java中从泛型类获取元素?

在Java中从泛型类获取元素?,java,generics,Java,Generics,假设我有一个简单的类产品: class Product{ private String name; //constructor //get name method } 也是一个在Java中实际使用泛型的类: class ListR<t>{ //more coding here... public void print(){ Node a=first; while(curr!=null){

假设我有一个简单的类产品:

class Product{
    private String name;
    //constructor
    //get name method
}
也是一个在Java中实际使用泛型的类:

class ListR<t>{
      //more coding here...
      public void print(){
          Node a=first;
          while(curr!=null){
               System.out.println(a.elem); //prints the value of a node
               a=a.next;
      }
}
类列表器{
//更多的编码在这里。。。
公开作废印刷品(){
节点a=第一;
while(curr!=null){
System.out.println(a.elem);//打印节点的值
a=a.下一步;
}
}
因此,如果我在主程序中列出产品对象,如下所示:

ListR<Product> list=new ListR<>();
Product p1=new Product("books);
//...
list.add(p1)...
list.print();
ListR list=new ListR();
产品p1=新产品(“书籍”);
//...
列表。添加(p1)。。。
list.print();
如何使我的print方法打印存储的产品的名称,我尝试在print方法的A类中使用泛型,但我不太确定如何执行。有什么帮助吗


谢谢

你不能,如果你保持现状的话。 据
ListR
所知,它包含
Object
s,而
Object
s不包含任何特定信息。它们有一个方法
toString
,您可以重写,但不建议将其用于演示目的

选项1:内部接口 如果允许稍作更改,您可以做的是强制
ListR
的内容实现一个接口,例如

public interface Printable {
  String printedForm();
}
然后

class Product implements Printable{
  //TODO: Whatever you want
  @Override
  public String printedForm() {
    //TODO return a pretty printed form of the product.
    //e.g. return this element's name
  }
}

class ListR<T extends Printable>{
  //...
  public void print(){
    Node a=first;
    while(curr!=null){
      //You can now invoke printedForm, because you forced T to implement Printable
      System.out.println(a.printedForm());
      a=a.next;
    }
  }
}
然后,在创建列表时:

ListR<Product> list = new ListR<>(new ProductFormatter());
listrlist=newlistr(newproductformatter());

这个编译?
System.out.println(a.elem);
对象没有一个公共字段,据我所知名为
elem
。不,它只是一个示例代码
a.elem
做什么?它返回什么?
“不,它只是一个示例代码“
--请发布有意义的代码。不要发布任何类型的代码。
ListR list=new list();
没有意义。谢谢@Giulio Franco,你的答案很好,很遗憾很多人否决了这个问题,无法在这里给出简单的答案
ListR<Product> list = new ListR<>(new ProductFormatter());