乐者为王

Do one thing, and do it well.

希望能在Java 7中看到的特性

1、支持@前缀的字符串,这样就不必再为到底是写几个反斜杠绞尽脑汁了。

2、支持String类型的switch。

3、支持静态equals方法的String类或扩展方法(Extension methods)。不明白为什么Java总是使劲地支持一些丑陋又复杂的语法。像比较两个字符串就偏偏要写成这种样式:

1
if (str1 != null && !str1.equals(str2))

难道就不能写成下面的格式吗?

1
if (str1 != str2)

1
if (!String.equals(str1, str2))

其中str1或str2中任何一个值为null时返回false。

4、对泛型进行一些适当的修正。比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class GenericsTest {

//    public void output(List<String> list) {
//        System.out.println("List<String>");
//    }

    public void output(List<Object> list) {
        System.out.println("List<Object>");
    }

    public static void main(String[] args) {
        GenericsTest gt = new GenericsTest();

        gt.output(new ArrayList<Object>());
        gt.output(new ArrayList<String>());    // 竟然不能通过编译,想不通!
    }
}

5、可以通过[]来访问List和Map。然后,下面的代码

1
2
3
4
List content = new LinkedList(10);
content.add(0, "Fred");
content.add(1, "Barney");
String name = content.get(0);

就可以写成

1
2
3
4
List content = new LinkedList(10);
content[0] = "Fred";
content[1] = "Barney";
String name = content[0];

还有可能的就是允许为列表使用数组初始化程序语法。例如:

1
LinkedList content = {"Fred", "Barney", "Wilma", "Betty"};

6、添加decimal或money关键字作为原生类型,或者使BigDecimal支持+,-,*,/等运算符。处理金融相关的数据时总是要使用到BigDecimal类型。可由于BigDecimal不支持运算符,在比较大小时就会很繁琐。例如,比较两个金额的大小:

1
2
3
4
BigDecimal zero = new BigDecimal(0);
if (amount.compareTo(zero) > 0) {
  return true;
}

7、支持ref/out关键字或支持返回Tuples。例如:

1
2
3
4
(int, int, int) transform(int x, int y, int z)

(r, g, b) = transform(x, y, z);
(l, a, b) = transform(transform(x, y, z));

当某个方法中有多个返回值或方法需要修改传递进来的String参数并返回修改后的值时,当前的Java语法处理起来就会比较麻烦。

8、重新整理简化I/O和Collection中的API,使之更易使用。

9、简单而强大的Date和Time实现,将java.util包中的Date和Calendar类合并成一个。

Comments