java - 填充和排序列表 <?扩展条款与条件>

标签 java generics

我正在制作一组自定义 swing 组件,它们实现各种属性,例如 required 标志或 tabIndex。我在尝试填充各种自定义组件的 List,然后根据每个组件的 tabIndex 对列表进行排序时遇到问题。

我试图做到这一点的方法是让我的组件实现一个名为 Indexed 的接口(interface),该接口(interface)实现单个方法 getIndex()。然后使用我的 IndexedComparator 进行排序。

我的类(class):

索引:

public interface Indexed {
      public int getIndex();
}

索引比较器:

public class IndexedComparator implements Comparator<Indexed> {

    @Override
    public int compare(Indexed o1, Indexed o2) {
        return o1.getIndex() - o2.getIndex();
    }

}

WW 文本字段:

public class WWTextField extends JTextField implements Indexed, FocusListener {
    private boolean required;
    private int tabIndex;

   ...

    @Override
    public int getIndex() {
        return tabIndex;
    }
}

新JFrame:

public class NewJFrame extends JFrame {
    List<? extends Component & Indexed> list = new ArrayList<>();
    IndexedFocusTraversalPolicy policy = new IndexedFocusTraversalPolicy();

    public NewJFrame() {
        initComponents();

        list.add(wWTextField1);
        list.add(wWTextField2);
        list.add(wWTextField3);
        list.add(wWTextField4);
        list.add(wWTextField5);
        list.add(wWFormatedTextField1);
        list.add(wWFormatedTextField2);

        Collections.sort(list);
        policy.populateComponents(list);
        this.setFocusTraversalPolicy(policy);
    }
}

编辑:我忘了发布一个实际问题。为什么我的实现没有

List<? extends Component & Indexed> list = new ArrayList<>();

工作?当我尝试编译时出现以下错误:

NewJFrame.java:22: error: > expected  
NewJFrame.java:22: error: ';' expected  
NewJFrame.java:22: error: illegal start of type  

最佳答案

Comparator 实例不是“自动”的,您必须指定它们。我认为你的意思是:

Collections.sort(list, new IndexedComparator());

关于java - 填充和排序列表 <?扩展条款与条件>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12524661/

相关文章:

java - 按属性对集合进行排序,以字符串形式给出

java - 如何自动将数据从 amazon S3 复制到 redshift?

java - 为什么 A->B 不构成 List<A>->List<B>?这不会消除对通配符的需要吗?

java - 接受父类(super class)作为参数,但在方法中使用子类

ios - 在 objective-c 泛型中,我可以将类型从一个类传递到另一个类吗

.net - 为什么我需要 Typescript 中的泛型

java - IMDB 数据库的正则表达式

java - 在替换方法中没有获取值 x 和 y,即(10 和 5)?

java - 动态改变Jtree中一个或多个节点的颜色

java - 意外的未经检查的转换警告