自从我使用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() {}
}
答案 0 :(得分:2)
您的陈述BB fifo = new BB();
应该在
throw new IllegalStateException("Please implement me.");
答案 1 :(得分:1)
我不确定你为什么会收到该错误消息,但问题很可能是你正在编写的代码是一个永远无法执行的地方(在你抛出异常之后)
我建议你删除例外或将其放在方法的最后。
BTW我建议您使用camelCase
作为方法并使用UnsupportedOperationException
,因为IllegalStateException
表示对象处于一种状态,表示该方法无法使用,即另一个令人困惑的错误。
此外还有一个FIFOLock
内置锁,因此我建议您使用new ReentrantLock(true);
是一个fifo锁。
答案 2 :(得分:1)
当您在类中声明 1-arg构造函数或任何 n-arg构造函数时,您还应该声明 0-arg构造函数强>你自己..因为Compiler
不会为你做..
当你的类中没有声明其他构造函数时,编译器只会添加默认构造函数。
所以,如果你想使用: - BB obj = new BB()
,除了现有的构造函数之外,在你的BB类中声明一个公共构造函数: -
public BB() {
}
public BB(String arg) { // Whatever constructor you have declared
}
或者,如果您无法更改类,请使用1-arg构造函数创建实例: -
public int Get() {
BB fifo = new BB("rohit"); // this is where I am declaring.
throw new IllegalStateException("Please implement me.");
}
注意: - 您应该在实例创建行之后使用throw
语句。否则,代码将不会Compile
..因为那将是{{1} }
答案 3 :(得分:0)
添加默认构造函数,如下所示:
public class BB implements DD {
BB()
{
}
public int Get() {}
}
答案 4 :(得分:0)
请在BB
课程中添加以下内容
public BB() {
}
我怀疑您在BB
类中使用了参数化构造函数,而没有创建默认构造函数/无参数构造函数。如果您的BB
类中有默认构造函数,那么请将其设为public
,以便可以在其他类中访问它。
答案 5 :(得分:-1)
正如你所说,你有public BB (String name) { mt = name}
你应该在你的代码中提到上面的内容......
然后你应该像这样初始化AA类中BB类的实例......
BB b = new BB("Vivek");
即 with a String as an Argument....
并将您的BB b = new BB("Hello");
放在抛出语句....