我想知道为什么我们不能在java中用方法编写方法,为什么代码不能执行
public class Quiz{
public static void main(String[] args) {
Book b = new Book(18);
Book c = new Book(10);
c = compare(c, b);
}
public static Book compare(Book k, Book m) {
k.x = 10;
k = null;
m.x = 3;
return m;
}
class Book {
int x = 20;
public Book(int x) {
this.x = x;
}
}
}
答案 0 :(得分:2)
因为您的class Book
是(非静态)inner class,这意味着它必须存在于外部类的实例中,您的类测验。
但您不创建Quiz
使Book类静态:
static class Book {
...
或者将类定义移到Quiz类之外。
答案 1 :(得分:0)
static class Book {
这将解决编译错误。
我想知道为什么我们不能在java中的方法中编写方法 块引用
你的意思是为什么我们不能在另一个方法中声明一个方法?
答案 2 :(得分:0)
因为Book
是非静态内部类,所以它只能从Quiz
的非静态方法实例化(否则它将无法找到this
参考,如果它需要一个)。但我承认我并没有真正看到你在这里想要实现的目标。
答案 3 :(得分:0)
您无法编译此程序。编译器会抱怨:
Quiz.java:4: non-static variable this cannot be referenced from a static context
这意味着,Book
中包含的课程Quiz
尚未实例化Quiz
。
因此,您需要像这样实例化一本新书:
public static void main(String[] args) {
Quiz q = new Quiz();
Book b = q.new Book(18);
Book c = q.new Book(10);
c = compare(c, b);
}