使用Java注释将类替换为派生类

时间:2015-07-22 10:32:11

标签: java eclipse netbeans reflection annotations

假设我扩展了一个像java.util.List这样的Java类来创建一个名为MyList的自定义类...如果我的同伴使用List编写代码,有什么办法,我可以把它转换成编译/运行时期间MyList

即。如果他们有类似的东西:

List groceryList = new List();

它应该编译/运行,如:

MyList groceryList = new MyList();

我知道注释可以做这种事情。在这种情况下可以使用它们吗?如果是,怎么样?

2 个答案:

答案 0 :(得分:0)

这称为downcasting

简短的回答是,如果他们使用new命令创建对象,例如在您的示例中,那么不,您将无法投射它。

您可以做的是在MyList类中定义一个构造函数,该构造函数接受要转换的对象作为参数并使用它来创建新对象。该列表有点特殊,因为您可以create new lists from existing ones。例如:

public MyList (List oldList)
{
    super(oldList); //this will copy the objects of the list to your custom list
    //But you could do any other operations to create the new object from the parameter(s)
    ...
}

并将其用作

MyList groceryList = new MyList(oldList);

答案 1 :(得分:0)

虽然java中的upcast大多是安全的,但Downcasting in Java并不是你经常使用的东西,除非确实需要,因为子类可能不支持超类可以使用的某些属性或方法。