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



假设我扩展了一个像java.util.List这样的Java类来创建一个名为MyList的自定义类…是否有任何方法,如果我的同行使用List编写代码,我可以在编译/运行时将其转换为MyList ?

。如果他们有这样的内容:

List groceryList = new List();

应该这样编译/运行:

MyList groceryList = new MyList();

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

这被称为向下转换。

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

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

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);

虽然在java中向上转换是安全的,但在java中向下转换是不应该经常使用的,除非真的需要,因为子类可能不支持超类可以支持的某些属性或方法。

相关内容

  • 没有找到相关文章

最新更新