相关疑难解决方法(0)

我被告知不要在这里使用反射...为什么不呢?

此代码用于对List进行排序.该列表可以包含数千个但不到10k的元素.

protected <E> int compareFields(E o1, E o2, String fieldName){
    try { 
        Comparable o1Data = (Comparable) o1.getClass().getMethod(fieldName).invoke(o1);
        Comparable o2Data = (Comparable) o2.getClass().getMethod(fieldName).invoke(o2);
        return o1Data == null ? o2Data == null ? 0 : 1 :
               o2Data == null ? -1 : o1Data.compareTo(o2Data);
    } catch(Exception e) {
        throw new RuntimeException(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

我被告知

"请不要对这样的事情使用反射!!要么使用合适的比较器提供方法,要么提取相关属性的方法(可能以原始类型不支持的方式计算),或两者兼而有之."

一个更好的方法来做这个例子会很好.

上下文:我有很多带数据表的屏幕.每个都是从List构建的.每个数据表需要按其6列中的每一列进行排序.列是Date或String.

java reflection

5
推荐指数
1
解决办法
1516
查看次数

标签 统计

java ×1

reflection ×1