好的,所以我在Java中创建了一个实现java.util.Collection接口的动态2D数组.我让我的数组实现它,因为我希望它具有与普通相同的功能Collection.但是,我无法实现该size()方法,因为在接口中它返回一个整数,并且2D矩阵可能会溢出整数类型.
这是我正在尝试制作的课程片段:
public abstract class AbstractMatrix<E> implements Collection<E>{
@Override
public long size() {
return columns * rows;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,这将无法工作,因为"返回类型与Collection<E>.size()" 不兼容",如果我将类型更改为int,则列*行可能会溢出.
我知道我不能覆盖像这样的大小方法,但是有什么方法可以确保方法在仍然实现Collection接口的同时返回正确的大小?
是的,我知道这是不切实际的,可能永远不会成为一个问题,但我很想知道是否有一个很好的解决方案.
我在尝试解析电话号码时遇到以下错误,"5554567899"
java.lang.NumberFormatException: For input string: "5554567899"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:495)
at java.lang.Integer.parseInt(Integer.java:527)
...
Run Code Online (Sandbox Code Playgroud)
显然,电话号码可以被解析.我甚至引用了这个问题,字节码结果是
53,53,53,52,53,54,55,56,57,57,
Run Code Online (Sandbox Code Playgroud)
所以字符串中没有不可见的字符.我很难过,有人可以帮忙吗?
这是抛出错误的代码部分,供参考:
String fullNumber = null;
for(Phone phone : party.getPhones()) {
if(phone != null && !phone.getDialNumber().isEmpty()) {
if(!phone.getAreaCode().isEmpty()) {
fullNumber = phone.getAreaCode();
}
fullNumber += phone.getDialNumber();
if(phone1 == null || phone1.equals(0)) {
LOGGER.debug(displayCharValues(fullNumber));
phone1 = Integer.parseInt(fullNumber);
}
}
Run Code Online (Sandbox Code Playgroud)
phone1是Java.lang.Integer类型的.