我是一个Java菜鸟。
这是我正在尝试做的事情:
//File 1
public class Class1
{
//....does some stuff
}
//File 2
public class Class2
{
//..also does some stuff including:
Class1 c = new Class1();
}
文件1和文件2位于同一目录中。
要编译,我正在使用命令:
javac Class2.java
这给了我错误的表格:
Error: Cannot find symbol Class1
我该如何解决这个问题?
答案 0 :(得分:0)
假设它们位于同一文件夹中,您不必导入,如果不是,则需要指定import java.util.Scanner;
这样的包。在Java中,您没有带扩展名的后缀。
你在用什么编写代码?
答案 1 :(得分:0)
要在一个文件中使用多个类,请查看此tutorial
如果您正在用两个不同的文件编写类,并且它们位于同一个包中,则不需要导入它们以便使用它们。但是如果您手动编译它们(使用命令提示符),请确保已编译所有.java文件。否则你会收到错误。
如果您使用不同的包编写它们,请确保这些类是公开的以便使用它们。是的,在这种情况下,您必须导入包含您要使用的类的包。如果使用命令promt,请再次确保编译所有类。
我的建议是使用一个好的IDE(有很多:)来完成你的代码,因为它们比我们更多地帮助你:)
答案 2 :(得分:0)
如果两个文件Class1.java
和Class2.java
位于同一目录中(并假设您已声明要使用的类),则根本不需要进行任何导入使用另一个; Java会自动找到另一个类。
所以在Class2.java
你可以做到:
public class Class2 {
void someMethod() {
Class1 c = new Class1();
}
}
答案 3 :(得分:0)
在基类上,
package ABC;
public class PQR {
// Do stuff
}
import ABC.*;
class XYZ {
// Use the PQR class method
}
答案 4 :(得分:0)
我不确定我是否理解这个问题 - 您是在尝试使用内部类(在另一个类定义中使用一个类定义)还是这些类是独立且独立的?需要导入来定义您可以访问的包/类,默认情况下,同一包中的包可用。因此,如果这些包在同一个包中,您实际上并不需要任何导入。此外,这两个类需要彼此可见。当你说它不起作用时,你会得到什么错误?
使用内部类的一种方法是outer.new Class1()(其中outer是封装Class1的类的对象)。如果这些不是内部类,则它们需要位于单独的.java文件中。
顺便说一句,建议明确提供访问修饰符(公共,私有,受保护)。
包含错误消息的完整代码列表将帮助我提供更好的答案......