如何使用从Java中的方法调用的对象?

时间:2019-04-02 02:32:47

标签: java object

我试图弄清楚在方法内部调用对象的语法。

伪代码:

    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)呢?

谢谢!

3 个答案:

答案 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方法。

覆盖equalshashCode方法。

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方法的默认实现在Java.lang.Object类中定义,该类仅检查两个Object引用(例如x和y)是否引用同一个Object。即检查x == y。由于Object类没有定义其状态的数据成员,因此也称为浅表比较。


如果您要进行更复杂的比较,最好的选择是实际上重写一个类文件中的equals命令


本文将是开始学习更多有关此主题的好地方。 https://www.geeksforgeeks.org/equals-hashcode-methods-java/