如何限制类列表只有一个类的子类(可能是一个抽象类)

时间:2018-06-04 12:32:02

标签: java abstract-class subclass

例如,假设我有AbstractClass并且我有一个名为AbstractClassFirstChildClass的{​​{1}}子类列表。而且我还有一个完整的SecondChildClass

现在假设以下代码段:

IsolatedClass

简单地说,我想在第三行出错。有没有办法在Java中实现这个目标?

2 个答案:

答案 0 :(得分:3)

如果您将列表声明为

List<Class<? extends AbstractClass>> classList = new ArrayList<>();

然后它只能包含扩展AbstractClass的类。

答案 1 :(得分:-1)

我认为&#34;有界的通配符&#34;是你正在寻找的。你可以这样使用它:

<Style TargetType="{x:Type ComboBox}">
    <Style.Triggers>
        <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=ListViewItem}}" Value="true">
            <Setter Property="Foreground" Value="AliceBlue" />
        </DataTrigger>

        <DataTrigger Binding="{Binding IsPrimary, ElementName=userControl}"  Value="True">
            <Setter Property="ItemsSource" Value="{Binding DataContext.IResourceTravelDocumentsModuleViewModel_ResourceTravelDocumentTypes_Primary, ElementName=userControl}" />
        </DataTrigger>
        <DataTrigger Binding="{Binding IsPrimary, ElementName=userControl}" Value="False">
            <Setter Property="ItemsSource" Value="{Binding DataContext.IResourceTravelDocumentsModuleViewModel_ResourceTravelDocumentTypes_Supplementary, ElementName=userControl}"  />
        </DataTrigger>
    </Style.Triggers>
</Style>

这样,列表只能包含从AbstractClass继承的项目。接口也是如此。