假设我想写一个看起来像这样的一次门......
int closing = 1;
if(closing-- > 0){
//this will only work once
}
我很好奇是否有任何其他机制以这种方式工作(或者可以这样做),这样我可能会使运算符重载(可以这么说),使其与对象的行为类似。
我有一种感觉,这是不可行的,但如果我错了,我会非常好奇地知道如何。
示例“愿望”代码......
class MagicObject{
public String oldVal = "apple"
public String magicPostEvalString(String newVal){
return oldVal;
oldVal = newVal;
}
}
MagicObject mo = new MagicObject();
if(mo.magicPostEval("orange").equals("apple"))
//this will also only happen once
请注意,在我的magicPostEvalString中,在返回后设置了值,以便在修改之前返回旧值。
本质上这就是foo ++正在做的事情......它会评估然后更改值。
答案 0 :(得分:7)
而不是:
public String magicPostEvalString(String newVal){
return oldVal;
oldVal = newVal;
}
您可以这样做来覆盖oldval并返回oldval:
public String magicPostEvalString(String newVal){
String tmp = oldval;
oldVal = newVal;
return tmp;
}
在java.util.Map#put(key, val)
方法中也做了类似的事情。
答案 1 :(得分:3)
它不是运算符,但通过修改MagicObject中的函数很容易实现。
class MagicObject{
public String oldVal = "apple"
public String magicPostEvalString(String newVal){
String temp = oldVal;
oldVal = newVal;
return temp;
}
}