您好我正在玩创建Java包。
我在一个名为admin的文件夹中创建了一个名为Employee的文件包 - 这个编译正确。在这个包之外我有另一个java文件导入它。这是源代码。
import java.util.*;
// this works --> import admin.Employee;
import admin.*; // this doesn't
public class Hello {
public static void main(String[] args) {
Employee h = new Employee("James", 20000);
System.out.println(h.getName());
}
}
奇怪的是,第二个导入语句工作正常,但第三个导入语句
Employee
./Employee.class
我只是使用javac Hello.java来编译
员工类在包管理员中。结构是
文件夹“admin” - >包含“Employee.class”和“Employee.java” 这个文件夹外面是hello.java文件。
package admin;
import java.util.*;
public class Employee
{
private static int nextId;
private int id;
private String name = "";
private double salary;
// static initialization block
static
{
Random generator = new Random();
// set nextId to a random number between 0 and 9999
nextId = generator.nextInt(10000);
}
// object initialization block
{
id = nextId;
nextId++;
}
// three overloaded constructors
public Employee(String n, double s)
{
name = n;
salary = s;
}
public Employee(double s)
{
// calls the Employee(String, double) constructor
this("Employee #" + nextId, s);
}
// Default constructor
public Employee()
{
// name initialized to ""--see below
// salary not explicityl set--initialized to 0
// id initialized in initialization block
}
public String getName()
{
return name;
}
public double getSalary()
{
return salary;
}
public int getId()
{
return id;
}
}
答案 0 :(得分:1)
package admin;
import java.util.*;
public class Employee
{
Employee.java
也应位于目录admin
中。例如
./Hello.java
./admin/Employee.java
答案 1 :(得分:0)
在不更改代码的情况下(不添加包声明,这就是我认为问题的真正要求),基本修复方法是:
当你告诉它导入admin.Employee,并且它在同一个源文件夹中时,编译器可以推断你想要隐式编译。导入admin。*时,需要在命令行中包含.java文件,或者将类路径包含在.class文件中,以便进行编译。