【问题标题】:Why does my code result in a compiler error? [closed]为什么我的代码会导致编译器错误? [关闭]
【发布时间】:2019-05-14 11:12:58
【问题描述】:

我试图了解为什么我的代码会导致编译器错误。谁能给我解释一下?

public class Employee {
    private String name;

    public Employee(String name) {
    this.name = name;
    }
}

public class Test {
    public static void main(String[] JavaLatte) {
        Employee e = new Employee("JavaDeveloper");
        System.out.println("Emp Name : " + e.name);
    }
}

【问题讨论】:

  • 在询问构建错误时,请始终在问题本身中包含 fullcomplete 错误输出(最好是完整的构建输出)。并在您显示的代码中添加注释,告诉我们错误在哪一行。请花一些时间阅读有关 how to ask good questionsthis question checklist 的信息。
  • 编译器错误通常会告诉您问题所在。您是否阅读了错误消息/堆栈跟踪?
  • 编译器错误应该给你一些关于问题出在哪一行的线索。请发布完整的错误,并最好用违规行标记发布的代码。也就是说问题是在打印语句中无法访问e.name

标签: java compiler-errors


【解决方案1】:

你没有说是什么错误,但我想我明白了。

System.out.println("Emp Name : " + e.name); - name 的属性eprivate

这意味着您不能直接从另一个类中访问它。您需要使用吸气剂。

public class Employee {

    private String name;

    public Employee(String name) { this.name = name; }

    public String getName(){ return name; }

}

然后像这样访问:e.getName();

还可以更改您需要设置器的属性值。

public void setName(String name){ this.name = name; }

【讨论】:

  • “这意味着你不能直接访问它。” -> 这意味着你不能直接从另一个类中访问它。
  • @Stultuske 我的错。我认为这很清楚。
  • 很清楚,只是不完整。在这种情况下,它是正确的,在另一种情况下,答案可能是错误的。如果被提及,下一个更容易找出原因
  • 您是对的,感谢您的完成。
【解决方案2】:

我看到 2 个问题:

  1. 在同一个文件中不能有 2 个公共类。
  2. name 是一个私有字段。您无法从 main 访问它。为它制作一个吸气剂来访问它。

【讨论】:

  • 这是正确的,如果你有单个类中的代码从测试类中删除公共。您需要一个 setter,但编译错误即将到来,因为 name 字段是私有的,无法在其他类中访问
【解决方案3】:

当您将访问说明符指定为私有时,它不会编译。

这里有很多选择

选项 1:根据您的要求使用相应的访问说明符,例如 public/protected/default。

选项 2:为该变量生成公共 getter 和 setter 方法以访问变量名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    相关资源
    最近更新 更多