gpt4 book ai didi

Java - 无法看到包内的类

转载 作者:行者123 更新时间:2023-12-02 05:11:21 25 4
gpt4 key购买 nike

我尝试创建一个包含一些类的包,但似乎存在一些可见性问题。

这是我的第一个类:

package trees;

public class Tree{

private static final int HEIGHT;
private static final String NAME;

public Tree(){
HEIGHT = 5;
NAME = "Basic Tree";
}

public Tree(int a, String n){
HEIGHT = a;
NAME = n;
}

public static int getHeight(){
return HEIGHT;
}

public static String getName(){
return NAME;
}
}

这是我的第二堂课:

package trees;

public class Evergreen{

public static void main(String[] args){
Tree first_tree = new Tree(20, "Fir");

System.out.println(first_tree.getName());
System.out.println(first_tree.getHeight());
}
}

但是当我编译时,终端给出了这些错误:

Evergreen.java:6: error: cannot find symbol
Tree first_tree = new Tree(20, "Fir");
^
symbol: class Tree
location: class Evergreen

Evergreen.java:6: error: cannot find symbol
Tree first_tree = new Tree(20, "Fir");
^
symbol: class Tree
location: class Evergreen

这两个类位于名为“trees”的文件夹中。我尝试将“implement trees.*”插入 Evergreen 类中,但没有任何变化。我正在使用 Mac Maverick,使用终端进行编译,并且 Java 是最新的。

我做错了什么吗?

感谢您的帮助。

最佳答案

这不是可见性问题。基本上发生的事情是你有变量 HEIGHT 和 NAME,它们是最终变量。根据Java的final变量契约提到here ,

You are always allowed to initialize a final variable. The compiler makes sure that you can do it only once.

您的代码中有 2 个问题,

  1. 在初始化最终变量时,您没有提供任何值。
  2. 您正在尝试稍后将一些值分配给最终变量

这两者都违反了上述契约(Contract)。

您可以尝试通过从变量修饰符中删除final来修改代码。

package trees;

public class Tree {

private static int HEIGHT;
private static String NAME;

public Tree() {
HEIGHT = 5;
NAME = "Basic Tree";
}

public Tree(int a, String n) {
HEIGHT = a;
NAME = n;
}

public static int getHeight() {
return HEIGHT;
}

public static String getName() {
return NAME;
}
}

关于Java - 无法看到包内的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27319680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com