我试图弄清楚在方法内部调用对象的语法。
伪代码:
boolean check(Object someObject) {
return someObject == theOtherObject;
}
public static void main(String args[]) {
someClass one = new someClass();
someClass two = new someClass();
one.check(two);
}
因此,应该使用check
方法检查两个对象是否相等,但是我将如何指定另一个对象(theOtherObject
应该是one
)呢?
谢谢!
答案 0 :(得分:2)
一个单词的答案:this
boolean check(Object someObject) {
return someObject == this;
}
将仅测试对象身份。您应该覆盖等于并使用它。
if (one.equals(two)) {
// ...
}
答案 1 :(得分:0)
您可以在boolean check(Object o)
中使用SomeClass
方法并进行检查
boolean check(Object o) {
this == (SomeClass) o;
}
这仅在两个参考变量都指向同一对象时才有效。此外,检查两个对象是否有意义相等的正确方法是使用继承的equals和hashCode方法。
覆盖equals
和hashCode
方法。
Why do I need to override the equals and hashCode methods in Java?
https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-
答案 2 :(得分:0)
所以您要的是在java.lang.Objects类中实际上已经有一个命令可以与对象进行比较。
IF EXISTS (select 1
from SCM_Top_Up_Operational O
join SCM_Top_Up_Rolling R ON O.String = R.string)
BEGIN
UPDATE O SET O.Date_Added = R.Date_Added,
O.Real_Exfact = R.Real_Exfact,
O.Excess_Top_Up = R.Excess_Top_Up
FROM SCM_Top_Up_Operational O JOIN SCM_Top_Up_Rolling R ON O.String = R.String
WHERE O.String = R.string
AND R.Date_Added > O.Date_Added;
END
ELSE
BEGIN
INSERT INTO SCM_Top_Up_Operational (String,Date_Added,Real_Exfact,Article_ID,Excess_Top_Up,Plant)
SELECT R.String,R.Date_Added,R.Real_Exfact,R.Article_ID,R.Excess_Top_Up,R.Plant
FROM SCM_Top_Up_Rolling R
WHERE R.String NOT IN (SELECT String FROM SCM_Top_Up_Operational)
END
这样做的比较称为浅比较。因此,如果您要这样做,那就可以了。作为参考,由geeksforgeeks.org定义的浅层比较的定义为
如果您要进行更复杂的比较,最好的选择是实际上重写一个类文件中的equals命令
本文将是开始学习更多有关此主题的好地方。 https://www.geeksforgeeks.org/equals-hashcode-methods-java/