未定义的参数在返回时使用 INT

huangapple go评论78阅读模式
英文:

Undefined arguments in return with INT

问题

以下是翻译好的代码部分:

public final class PhpArray extends AbstractMap
{
    private TreeMap t;
    private HashMap m;
    
    public PhpArray() {
        this.t = new TreeMap(Request.PHP_ARRAY_KEY_COMPARATOR);
        this.m = null;
    }
    
    @Override
    public Object put(final Object key, final Object value) {
        if (this.m != null) {
            return this.m.put(key, value);
        }
        try {
            return this.t.put(key, value);
        }
        catch (ClassCastException e) {
            this.m = new HashMap(this.t);
            this.t = null;
            return this.m.put(key, value);
        }
    }
    
    @Override
    public Set entrySet() {
        if (this.t != null) {
            return this.t.entrySet();
        }
        return this.m.entrySet();
    }
    
    public int arraySize() {
        if (this.t == null) {
            throw new IllegalArgumentException("The passed PHP \"array\" is not a sequence but a dictionary");
        }
        if (this.t.size() == 0) {
            return 0;
        }
        return 1 + this.t.lastKey();
    }
}

请注意,为了保持代码的完整性和一致性,我已经将代码中的注释和错误消息翻译成了英文。如果您需要更多帮助或解释,请随时提问。

英文:

i have the code like this when i create it like this

public final class PhpArray extends AbstractMap
{
private TreeMap t;
private HashMap m;
public PhpArray() {
this.t = new TreeMap(Request.PHP_ARRAY_KEY_COMPARATOR);
this.m = null;
}
@Override
public Object put(final Object key, final Object value) {
if (this.m != null) {
return this.m.put(key, value);
}
try {
return this.t.put(key, value);
}
catch (ClassCastException e) {
this.m = new HashMap(this.t);
this.t = null;
return this.m.put(key, value);
}
}
@Override
public Set entrySet() {
if (this.t != null) {
return this.t.entrySet();
}
return this.m.entrySet();
}
public int arraySize() {
if (this.t == null) {
throw new IllegalArgumentException("The passed PHP \"array\" is not a sequence but a dictionary");
}
if (this.t.size() == 0) {
return 0;
}
return 1 + this.t.lastKey();
}
}

but when i update my project i got error in the code

return 1 + this.t.lastKey();

the error is an arguments + is undefined.. why like that ? and how to fix the problem ?

答案1

得分: 1

TreeMap是一个泛型类,但在您问题中的代码中,您使用了没有类型参数的形式。这意味着您代码中的这行:

private TreeMap t;

实际上等同于这行:

private TreeMap<Object, Object> t;

换句话说,t.lastKey()返回一个Object,而运算符+不能用于Object,因为Object不是一个数字。

也许您想要调用size()方法而不是lastKey()方法?

也许这个教程会有帮助?

英文:

TreeMap is a generic class but in the code in your question you have used it without type parameters. This means that this line of your code:

private TreeMap t;

is essentially this:

private TreeMap<Object, Object> t;

In other words t.lastKey() returns an Object and the operator + can't be used with Object because an Object is not a number.

Perhaps you meant to call method size() rather than method lastKey()?

Perhaps this tutorial will help?

huangapple
  • 本文由 发表于 2020年7月27日 17:54:53
  • 转载请务必保留本文链接:https://go.coder-hub.com/63112837.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定