エラーを次の行に切り分けました: string.getClass() == jojo.getClass() この行は 2 つの Class オブジェクトを作成し、それらが (2 つの参照のように) 同じオブジェクトを指しているかどうかをチェックするべきではありませんか? false の値を返すのではなく、コードは実行されません。
public class Tester
{
public static void main(String[] args)
{
OreoJar jojo = new OreoJar(0);
OreoJar momo = new OreoJar(1);
String string = "Hello";
if (momo.getClass() == jojo.getClass())
{
System.out.println("Momo and jojo are of the same class");
}
if (string.getClass() == jojo.getClass())
{
System.out.println("String and jojo are of the same class");
}
}
}
public class OreoJar
{
int oreos;
public OreoJar(int oreos)
{
this.oreos = oreos;
}
public void count()
{
System.out.println(oreos + " oreos in this jar!");
}
}
このコメントは隠されているようなもので、初心者(私のような)にとって最も意味があるので、言及する価値があると思います
-JLSによると、「キャスト変換によっていずれかのオペランドの型をもう一方の型に変換できない場合はコンパイル時エラーです」したがって、型AとBの2つの参照を比較できるのは、 A を B にキャストできるか、B を A にキャストできる場合 – パトリシア シャナハン