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