限制子类字段类型

时间:2015-12-18 09:56:02

标签: java

似乎是一个痛苦的简单问题,我无法找到答案。 让我们说有一个方框:

public class Box {
    Object contents;
    ...
}

我想创建一个Box的子类,它只存储一个Object的子类型,比如String:

public class StringBox extends Box {
    String contents;
    //added fields/methods
    ... 
}

但是这会影响StringBox父母的内容,这不是我想要做的。我可以使用if语句或其他东西,但这似乎是一个糟糕的解决方法。我也知道可以使用泛型,只有一个Box< T> class,但我想拥有具有额外功能的子类。我也不知道抽象领域,所以我有点不知所措。

如果不清楚,我正在寻找一种将超类继承的字段限制为特定子类型的好方法。如果我遗漏了一些显而易见的事情或更好的做事方式,我道歉。

1 个答案:

答案 0 :(得分:1)

  

我不知道抽象字段

没有if字段这样的东西。只有方法(分别是类)可以是switch

  

我也知道可以使用泛型并且只有一个abstract类,但我想拥有具有额外功能的子类。

在这种情况下,通用abstract实际上可能是您最好的朋友。此外,如果您的Box<T>类只是暴露了一些抽象,那么您可以转换为通用接口:

Box<T>