2012-10-08 124 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”); '在投掷陈述之前....' –