Java导入非公共的自定义类
这是我的Java项目结构。(对不起,我没有足够的声誉上传图片。:D) 我想将类从MyFrame.java导入Test.java 当MyFame.java下的MyFrame类为公共时:Java导入非公共的自定义类,java,eclipse,Java,Eclipse,这是我的Java项目结构。(对不起,我没有足够的声誉上传图片。:D) 我想将类从MyFrame.java导入Test.java 当MyFame.java下的MyFrame类为公共时: Practice └─src ├─main │ └─java │ ├─GridPrac.java │ └─MyFrame.java └─test └─java └─Test.java Eclipse不会生成错误通知 但是,当MyFame.java下的MyFrame类
Practice
└─src
├─main
│ └─java
│ ├─GridPrac.java
│ └─MyFrame.java
└─test
└─java
└─Test.java
Eclipse不会生成错误通知
但是,当MyFame.java下的MyFrame类不是公共类时
public class MyFrame{...}
Eclipse生成一个错误通知
我可以从同一项目源文件夹下的不同自定义包导入公共类吗
或者,如何从同一项目中的不同文件夹导入非公共类
提前谢谢你
:D问题是您的类都在默认包中,这是不鼓励的。Java也不允许您通过正常方式访问该包中的类。有关更多信息,请参阅此线程和链接的等级库: 除此之外,如果您的类不是公共的,那么它就不能被包之外的类访问,也不能扩展该类。这是语言的一部分,不是eclipse的问题 因此,如果您想从
Test
访问MyFrame
,并且两者都在不同的包中,MyFrame
需要是公共的。在您的情况下,src/main/java
将不会是一个包,除非您不遵守约定,我假设不是这样,否则您可能会有不同的名称。如何从同一项目中的不同文件夹导入非公共类。答案是你不能。在Java中,外部类可以是公共类,也可以是默认类(无访问修饰符)。当一个类具有默认的可访问性时,它被称为包私有。这意味着包私有类只能对同一包内的其他类可见。比如说
class MyFrame{...}
任何人都可以访问公共类。但是,
package foo;
public class PublicClass {...}
只能由栏
文件夹(或包)中的类访问。因此,PublicClass
无法导入PackagePrivateClass
,因为它们位于不同的包中
这是否回答了您的问题?Java类/字段/方法的默认设置(当您没有将其定义为public等时)是“包私有”,这意味着只有存在于同一个包中的类才能访问它们
如果它们在同一个包中,则两个类始终可以看到对方,而无需导入。否则,一个类必须是公共的,才能被包外的另一个类访问,在这种情况下,您必须使用导入 如果两个类都在同一个包中,则无需导入任何内容,文件夹结构无关紧要。如果您收到错误通知,您应该在问题中包含错误消息。
package bar;
class PackagePrivateClass {...}