刚开始步入Java语言,如果这里有说的不对,还请各位Java高人给指点一下!长话短说,缺陷如下:

  1. 参数:没有out类型参数,参数无法传到调用处,比如如果我有:
public static bool parseInt(string text, int number) {
    try {
        number = Integer.parseInt(text);
    } catch (Exception ex) {
        return false;
    }
    return true;
}
  1. 因为Java中没有out类型参数我就不能很方便的这样去调用它了:
int number = 0;
String numberToParse = "100";
if (parseInt(numberToParse, number)) {
    // Process the number parsed.
    // ......
}
  1. 实际上我希望Java增加对in、out、in-out的同时支持,就目前来讲,Java只支持in。
  2. 接口:Java中的接口有很大的限制,使用起来及其不便,一个接口会不兼容另一个接口,换句话说就是两个接口无法同时存在的问题,这是一个非常棘手而又没有walk around的问题。具体示例如下所述:如果我从两个第三方获得两个接口,INumber、IClassStructure:
public interface INumber {
    INumber parse(String text);
}
public interface IClassStructure {
    IClassStructure parse(String text);
}
  1. 这是两个完全不相干的接口,它们除了都有一个parse方法外没有什么业务上的关系。注意上面两个接口的方法签名是一样的,只是返回类型不一样,这就意味着无法在一个Java类中同时实现这两个接口,这就是我所说的没有walk around的问题,你可以试想一下解决方法,注意由于是从第三方处得来的接口,所以我不能去改变其中一个接口的源代码。另外一个问题就是如果这两个接口返回的类型是一样的,比如都是void,那么就不会有语法错误同时实现它们两个,但是两个接口的意义又都不同,那为什么我不能为不同的接口实现不同的逻辑呢?Java在最关键的接口方面居然做的这么差实在让我出乎意料,要知道OOD(Object Oriented Design)主要就是靠抽象层的设计来做的相对完美的,但是Java中的接口居然有这么多局限性实在让人失望。建议Java增加对不同的接口可以有不同实现的机制,这样就也可以解决第一个问题了。顺便说一句,.NET中可以针对不同的接口有不同的实现。