gpt4 book ai didi

java - 在java中搜索其他类

转载 作者:行者123 更新时间:2023-12-01 06:18:12 25 4
gpt4 key购买 nike

New
| -- test
| -- Second.java
| -- Second.class

| -- com
| -- mypack
| -- First.java

| -- classes
| -- expecting First.class HERE

//Second Class
public class Second{}

//First Class
package com.mypack; // Problem HERE

public class First{
public static void main(String args[]){ new Second() };
}

案例 1:在 First class 中注释包语句

C:\Anshul\New\com\package>javac -cp ..\..\test First.java
C:\Anshul\New\com\package>java -cp ..\..\test;. First
Second@19821f
-------------------------------------------------------------------------------------

案例 2:First class 中未注释的包语句

C:\Anshul\New\com\mypack>javac -cp ..\..\test -d ..\..\classes First.java
First.java:7: cannot find symbol
symbol : class Second
location: class com.mypack.First
System.out.print(new Second());
^
1 error
---------------------------------------------------------------------------------

案例 1 运行良好。但是当我在 First 类中包含 package 语句并尝试编译时,它会出现错误。

最佳答案

正如您所说,Second.Java 不在任何包下,因此它位于默认包下。以下是正在发生的事情的详细信息:

Remove the package statement from First.java

因此,First.class 也进入默认包,并且能够在同一个包中找到 Secon.class;因此工作正常。

Add package statement to First.java.

因此,First.class 进入 com.mypack 包;但 Second.class 仍保留在默认包中。因此现在 First.java 无法编译,因为 Second.class 对于 First.java 代码是不可见

为了解决这个问题,您必须在 First.java 中显式导入 Second 类。并且根据 Java 约定,不应在默认包中创建类。

关于java - 在java中搜索其他类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18640359/

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