Java 从对象变量恢复属性

Java 从对象变量恢复属性,java,object,methods,attributes,Java,Object,Methods,Attributes,这就是我问题的背景 我创建了一个单链表,它的节点属性是一个对象变量,所以我可以存储来自不同类的对象。到目前为止还不错 public class Node { Object data; Node next; public Node(Object data) { this.data=data; this.next=null; } [...]

这就是我问题的背景

我创建了一个单链表,它的节点属性是一个对象变量,所以我可以存储来自不同类的对象。到目前为止还不错

        public class Node 
    {

        Object data;
        Node next;

        public Node(Object data)
        {
            this.data=data;
            this.next=null;
        }

[...]    

}
问题是我不知道如何从存储的对象恢复属性/方法。比如这个

public class Product 
{
    double discount;
    double price;

    public double getPrice() {
        return price;
    }

[...]

帮助。

有几种不同的方法可以获得这些信息

Apache提供了一个很好的API,

或者可以使用Java反射

另一种方法是,如果存储的对象类型有限(或至少计划从中检索属性),则使用
instanceof
和类cast,如中所示

if(node.data instanceof Product){
    Product p = (Product) node.data;
    //Get attributes from products
else if(node.data instanceof SomethingElse){
    SomethingElse p = (SomethingElse) node.data;
    //Get attributes from somethingElse
}
...
else{
    //throw an error or ignore the final case
}