2017-10-23 4 views
-1

私は2つのクラスを持っています。どのオブジェクトにint型をキャストするのですか?

LetLangParser() 
    LetLangExp() 

LetLangExpは、サブクラスConstExpを持っています。

class ConstExp extends LetLangExp { 
     int value; 
     public ConstExp(int value){ 
      this.value=value; 
     } 
    } 

LetLangParserは私がLcExpとしてのxを変換したいここ

LetLangParser() { 
     LetLangExp LcExp; 
     LcExp=ParseE(); 
    } 


    static LetLangExp ParseE() { 
     ** do some calculation ** 
     int x= *do some calculation* 

     } 

として定義されます。どのように私はそれを行うことができるでしょうか?

+2

'new ConstExp(...);'?あなたがここで達成しようとしていることはまったく理解できません。 – luk2302

+0

は、スタックオーバーフローへようこそ! は、[ツアー](/ツアーを)取るの周りを見て、そして は、[ヘルプセンター](/ヘルプ)をお読みください、 特に[どのように私は良い質問をするのですか?] (/ help/how-to-ask)と[ここではどのようなトピックについて聞くことができますか?](/ help/on-topic)その2番目のリンクから:「宿題の助けを求める質問には、問題を解決するために今まで行ってきた作業の概要と、それを解決している困難の説明が含まれていなければなりません。だからあなたの問題は何ですか? –

答えて

0

Javaは厳密に型指定された言語です。異なるタイプの変数(LetLangExpなど)に、あるタイプの変数または値(intなど)を任意に割り当てることはできません。それを行う方法はありません。

Integerラッパー型の変数にint変数を割り当てることができますが、内部的にJavaはプリミティブ型とそのラッパー型の間でオートボックス/アンボックスを実行するため、 intをInteger以外の型に変換します。

xの値を変数LcExpの値に戻したい場合は、ConstExpサブクラスのインスタンス変数を使用してxを渡すことができます。したがって、このような何か:

LetLangParser() { 
     LetLangExp LcExp; 
     LcExp=ParseE(); 
} 


static LetLangExp ParseE() { 
    ** do some calculation ** 
    int x= *do some calculation* 

    ConstExp exp = new ConstExp(x); 

    return exp; 

} 

EDIT:あなたがメソッドから返された値を印刷したい場合は、あなたのフォローアップの質問への答えとしては、あなたにgetterメソッドを追加する必要がありますこのように値を取得できるようにするConstExpクラス。

class ConstExp extends LetLangExp { 
    int value; 
    public ConstExp(int value){ 
     this.value=value; 
    } 

    public int getValue(){ 
     return this.value; 
    } 
} 

は、次に返された値を印刷するために、あなたは、そのConstExpサブタイプにLcExp変数をキャストし、上記追加getterメソッドを使用して値を取得し、それを印刷するようなものが必要

LetLangExp LcExp; 
LcExp=ParseE(); 

//cast LcExp to ConstExp sub-type 
ConstExp constExp = (ConstExp) LcExp; 

//print the value after retrieving it using the getter method 
System.out.println(constExp.getValue()); 
+0

質問をもう一度読んで、以前は見逃していたConstExpサブタイプに気付きました。その答えを変更して、そのクラスを使用して値を返してください。 – Saurabh

+0

なぜ私の答えは否定的な投票ですか? :) – Saurabh

+0

私は否定投票していない –

関連する問題