2012-10-08 198 views
1

自從我使用JAVA以來已經有一段時間了。創建實例變量不起作用?

我想創建一個實例變量,以便在另一個類中使用一個方法。

但它給我,說此錯誤消息「的構造BB是未定義」

任何幫助嗎?

public class AA implements CC { //this is the class where I am trying to create an instance variable 

     public int Get() { 
     throw new IllegalStateException("Please implement me."); 
     BB fifo = new BB(); // this is where I am declaring. 
    } 
} 

還有FIFOLock類的簽名。

public class BB implements DD { 
     public int Get() {} 
} 
+2

*「一段時間,因爲我用JAVA。」 *它已經足夠成熟,現在,我們不覺得有必要關於它。所以現在你可以稱之爲'Java'。 –

+0

你在BB和DD中有什麼構造函數定義? –

+0

我沒有在那裏看到任何實例變量... –

回答

2

你的說法BB fifo = new BB();前應

throw new IllegalStateException("Please implement me.");

+0

這不應該是正確的。無論如何,我嘗試過,但顯然沒有奏效。無論如何感謝您的幫助 – Nayana

+1

否您的'throw'語句將成爲您的方法的最後一個聲明,因爲控制權轉移到了異常處理代碼,因此您可能會收到'Unreachable code'錯誤 – Abubakkar

0

添加默認的構造函數,這樣做:

public class BB implements DD { 
BB() 
{ 
} 

     public int Get() {} 
} 
+0

這是我的課程項目,我我不應該修改BB類。在BB類中,我有:public BB(String name){mt = name} mt是一種類型的線程。 – Nayana

1

我不知道爲什麼你得到該錯誤消息,但問題可能是你正在編寫代碼是一個永遠不能執行的地方(在你拋出異常之後)

我建議你刪除異常或將它放在方法的末尾。

順便說一句我建議你使用camelCase的方法和使用UnsupportedOperationException作爲IllegalStateException說對象處於一種狀態,這意味着該方法不能使用,即另一個混淆錯誤。

另外還有一個FIFOLock鎖內建所以我建議你使用new ReentrantLock(true);是一個fifo鎖。

1

在聲明1參數的構造函數或在您的類中的任何正參數的構造函數,那麼你也應該在自己的聲明0參數的構造 ..因爲對於Compiler不會做你..

編譯器只增加了默認的構造函數,當在你的類中聲明沒有其他的構造..

所以,如果你想使用: - BB obj = new BB(),在聲明公共構造您除了已有的構造BB類,你必須: -

public BB() { 
} 

public BB(String arg) { // Whatever constructor you have declared 
} 

或者,如果你不能改變類,使用1參數的構造函數創建實例: -

public int Get() { 
    BB fifo = new BB("rohit"); // this is where I am declaring. 
    throw new IllegalStateException("Please implement me."); 
} 

注意: - 您應該在實例創建行後面有throw語句。否則,代碼不會Compile ..因爲這將是UnreachableCode

0

請加入您的BB

public BB() { 
    } 

下面我懷疑你已經在你的BB類使用參數化的構造,而無需創建默認構造函數/無參數的構造函數。如果你在你的BB類中有默認的構造函數,那麼使它爲public,這樣它可以被其他類訪問。

+0

這是我班的項目,我不應該修改BB班。在BB類中,我有:public BB(String name){mt = name} mt是一種類型的線程。 – Nayana

-1

就像你說的,你有public BB (String name) { mt = name}

你應該提到我們的代碼上面.....

那麼你應該初始化類BB的實例類AA這樣。 ..

BB b = new BB("Vivek");

即。with a String as an Argument....

,並把您的BB b = new BB("Hello");聲明之前....

+0

作爲參數應該是什麼字符串?任何字符串? – Nayana

+0

我剛剛添加了一個隨機字符串作爲參數,現在它說「無法訪問的代碼」 – Nayana

+0

將您的BB b = new BB(「Hello」); '在投擲陳述之前....' –