我正在嘗試在 double 和 Figura 類之間投射第四個等于槽投射,但我不知道如何解決。我正在嘗試在 double 和 Figura 類之間投射第四個等于低谷投射,但我不知道該怎么做。
練習說:給定統計字串顏色屬性的 Figura 類,String nom 和 double area() 方法,equals 方法定義如下:修改 equals 方法,如果產生 unchecked ClassCastException,它仍然是在方法中捕獲和處理,因為它的行為與 Object 類中定義的等號一致。
package ejer2;
public class Main {
public static void main(String[] args) {
Figura f1 = new Figura("roig","quadrat");
Figura f2 = new Figura("roig","quadrat");
Double d = new Double(1.0);
String k = "Hola";
boolean b1 = f1.equals(f2);
boolean b2 = d.equals(k);
boolean b3 = k.equals(f2);
boolean b4 = f1.equals(d);
}
}
package ejer2;
public class Figura {
String color;
String nom;
public Figura(String color, String nom) {
this.color=color;
this.nom=nom;
}
public double area() {
return 0;
}
public boolean equals (Object o) {
Figura f =(Figura) o;
try {
return this.color.equals(f.color) && this.nom.equals(f.nom)&& this.area() == f.area();
}
catch(ClassCastException ex) {
return this.color.equals(f.color) && this.nom.equals(f.nom);
}
}
}
uj5u.com熱心網友回復:
Java 中的每個類都派生自Object該類,這包括Double所以您根本不需要強制轉換它。在你的equals函式中,你應該只在確定它是一個有效的Figura物件后使用instanceof
public boolean equals (Object o) {
if(!o instanceof Figura) {
return false;
}
//now we can safely cast because we know it must be a Figura object
Figura f = (Figura) o;
}
在 Java 14(預覽版)及更高版本中,您還可以使用智能轉換
public boolean equals (Object object) {
if(object instanceof Figura o) {
/* object is now guaranteed to be
of type Figura and we have a new reference to the automatically casted object "o" */
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/466154.html
