Would it create issues if Number were to be implemented as an interface? Are there benefits?
在最近的一个问题上,我偶然发现了
既然Java 8在这里,就有默认方法,所以EDCOX1×0可能是一个接口,并写成:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public interface Number { public int intValue(); public long longValue(); public float floatValue(); public double doubleValue(); default public byte byteValue() { return (byte)intValue(); } default public short shortValue() { return (short)intValue(); } } |
如果是这样的话,使用
这样的改变肯定会立即破坏API,并导致Java编程的混乱。你不能改变一个类(也就是说,自从Java出现时存在的那个类)变成一个接口,因为这两个类都有不同的含义。两者的使用方式不同。
例如,一旦您使
您可能会认为,在改变EDCOX1(0)时,Java API设计器也可以相应地改变Java API中必要的子类。但他们不能忽视这样一个事实,即其他人可能拥有从
关于这个问题产生的事实,还有一件事——使用默认方法的