2

私は現在、エラーを起こしたプロジェクトを持っていますが、なぜそのエラーが発生するのかわかりません。

私の構造:

Class: Variable (commands.lib.Variable);
Class: ImageLoader extends Variable (commands.lib.Variable);

次に、変数を ImageLoader にキャストします。

// There is a variable made with: Variable v = new ImageLoader();
public static Variable(commands.lib.Variable) getVariable(String value){...}
ImageLoader t = (ImageLoader)getVariable(ab[2]);

しかし、これは私にエラーを与えます:

Exception in thread "main" java.lang.ClassCastException: commands.lib.Variable cannot be cast to commands.variable.ImageLoader

もちろん、私はClassCastExceptionをグーグルで検索し、この投稿は結果から出てきました: Javaでの「ClassCastException」の説明

ここで誰かが説明します:

Animal a = new Dog();
Dog d = (Dog) a; // no problem, the type animal can be casted to a dog, because its a dog
Cat c = (Dog) a; // raises class cast exception, you cant cast a dog to a cat

したがって、私のコードでは次のようになります。

Variable a = new ImageLoader();
ImageLoader b = (ImageLoader) a; // This should work, but will throw a ClassCastException
Array c = (Array) a; // This should throw a error

だから私は少し無知です。誰かが私を助けて、エラーを修正してくれることを願っています。

ご挨拶、

ロビン

4

2 に答える 2

0

Javaでは、スーパークラスをサブクラスにキャストできます。私は前にそれをしました。問題は、ImageLoaderが作成されなかったことです。作られたと思ったところ。

于 2012-10-25T12:54:26.870 に答える
0

編集:答えは実際には質問に答えませんが、以下のコメントは根底にある概念の理解に役立つため、削除しません。

私はいつもこれと混同されていました

でも見る

この文

Variable v = new ImageLoader();

のオブジェクトを保存していますImageLoader(Subclass)これVariable(SuperClass)は問題ありません

しかし、この発言

ImageLoader t = (ImageLoader)getVariable(ab[2]);

これはJavaでは許可されていないため、エラーに変換Variable(superclass)していますImageLoader(SubClass)

于 2012-10-25T12:40:26.310 に答える