当前位置: 首页 > 知识库问答 >
问题:

在另一个类(同一个包)中使用自定义类

米楷
2023-03-14

我刚开始使用Java,到处搜索,但无论出于何种原因都无法找到解决方案。我的问题对我来说似乎很简单:我在同一个文件夹中有两个类,该文件夹是我的包,为了说明:

packageE/Class1.java
packageE/Class2.java

我需要在第2类中创建第1类的实例,但它就是不起作用。这是一个示例:

文件路径:packageE/Class1.java

package packageE
public class Class1 {... something ...}

文件路径:packageE/Class2.java

package packageE
public class Class2 {
    public void main (String[] args) {
        Class1 object = new Class1();
    } 

我得到这个错误

Class2.java:52: error: cannot find symbol

                    Class1 object = new Class1();
                    ^
  symbol:   class Class1

  location: class Class2

Class2.java:52: error: cannot find symbol

                    Class1 object = new Class1();
                                                        ^
  symbol:   class Class1

  location: class Class2

根据要求,完整的源代码:注:class1=ClientIndividual,class2=涉众

第一个文件

package substitutiva;
import java.util.ArrayList;
import java.util.Scanner;

public class Stakeholders {
    static ArrayList<Object> companyList = new ArrayList<>();
    ArrayList<Object> individualList = new ArrayList<>();
    ArrayList<Object> employeeList = new ArrayList<>();

    public static void addToRegistry (Object person) {
        System.out.println(person.getClass());
        companyList.add(person);
    }

    public static void main (String[] args) {
        Scanner read = new Scanner(System.in);
        
        // select action
        String selectedAction = "";
        while (selectedAction != "1" && selectedAction != "2") {
            System.out.println("Selecione uma ação:");
            System.out.print("1. Cadastrar");
            System.out.println("2. Listar registros");
            selectedAction = read.nextLine();
            
            if (selectedAction != "1" && selectedAction != "2") {
                System.out.println("Opção indisponível! \n");
            }
        }

        // select person
        String selectedOption = "";
        while (selectedOption != "1" && selectedOption != "2" && selectedOption != "3") {
            System.out.println("Qual tipo de pessoa deseja acessar?");
            System.out.println("1. Funcionário");
            System.out.println("2. Cliente PF");
            System.out.println("3. Cliente PJ");
            selectedOption = read.nextLine();
            
            if (selectedOption != "1" && selectedOption != "2" && selectedOption != "3") {
                System.out.println("Opção indisponível! \n");
            }
        }

        // register
        if (selectedAction == "1") {
            switch (selectedOption) {
                case "1":
                    
                    break;
                case "2":
                    ClientIndividual personObject = new ClientIndividual();
                    addToRegistry(personObject);
                    break;
                case "3":
                
                    break;

                default:
                    break;
            }
        }

        // list
        else if (selectedAction == "2") {
            switch (selectedOption) {
                case "1":
                    break;
                case "2":
                    break;
                case "3":
                    break;
                
                default:
                    break;
            }
        }
        

        read.close();
    }

}

第二个文件

package substitutiva;

import java.util.Scanner;

public class ClientIndividual implements Person {
    String name;
    String cpf;

    @Override
    public void registerPerson() {
        Scanner read = new Scanner(System.in);
        
        System.out.println("Nome: ");
        this.name = read.nextLine();

        System.out.println("CPF: ");
        this.cpf = read.nextLine();

        read.close();
    }

    // constructor
    public ClientIndividual(){};

    // getters & setters
    public String getName() {
        return this.name;
    }

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

    public String getCpf() {
        return this.cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

}

第三个文件(接口)

package substitutiva;

public interface Person {
    public void registerPerson ();
}

原始错误

Stakeholders.java:52: error: cannot find symbol
                    ClientIndividual personObject = new ClientIndividual();
                    ^
  symbol:   class ClientIndividual
  location: class Stakeholders
Stakeholders.java:52: error: cannot find symbol
                    ClientIndividual personObject = new ClientIndividual();
                                                        ^
  symbol:   class ClientIndividual
  location: class Stakeholders

共有1个答案

澹台欣怿
2023-03-14

看起来您正在通过javac手动编译

将工作文件夹更改为您的文件所在的根文件夹,而不是替代文件,并使用javac替代文件/Stakeholders.java命令进行编译

 类似资料:
  • 我刚开始Java,到处搜索,但无论出于什么原因都找不到解决方案。我的问题对我来说似乎很简单:我在同一个文件夹中有两个类,那个文件夹是我的包,所以举例来说: 我需要在类2中创建一个类1的实例,但它就是不起作用。以下是一个示例: 文件路径: 文件路径:

  • 我是OOPs新手,如果这听起来很基本,我很抱歉。我有一个具有以下代码的类:- 现在假设我在同一个包中有另一个类“Main”。有什么方法我可以创建一个类的对象'内部'在'主'与类'外部'参考? 我尝试了以下操作(这是抛出错误):- “Main”和“Outer”类都在同一个包中。另外,我的主要目标是了解是否有任何方法可以在main方法中创建类Inner的对象,如下所示:-outerO1=newinne

  • 问题内容: 在Bruce Eckel的“ Thinking In Java,第四版”的第428页(有关类型信息的章节)中,具有以下示例: 也许我有点累,但是我看不到add()方法中对add()的调用是如何工作的。我一直认为它应该有一个引用,或者是一个静态方法(并且我在ArrayList或List中找不到静态add())。我想念什么? 我只是为自己测试,发现这可行: 问题答案: Java为这样的方法

  • 类别:账户余额 我已经把这两个类都放在Balance.java和Account tBalance.java.这两个文件都在E:/程序/MyPack. Balance.java编译没有错误但是当我编译Account tBalance.java它给出错误:找不到符号"平衡". 我无法弄清楚为什么当两个类都在同一个包中声明时? 我正在使用javac B从MyPack编译alance.javajavac

  • 我想把一个模型对象映射到dto模型。我已经有一个对象的映射器。我如何在另一个类中的另一个映射器中重用这个映射器? 我有下面的模型 这是我的地图 我希望将History映射到HistoryDynamo并重用IdentifierMapper映射HistoryDynamo中的一个对象。如何在ToHistoryDynamo中使用toIdentifierDynamo?

  • 问题内容: 我是python的新手。我试图在类中将值从一种方法传递给另一种方法。我搜索了该问题,但无法获得适当的解决方案。因为在我的代码中,“ if”正在调用类的方法“ on_any_event”,而该方法反过来应该调用我的另一个方法“ dropbox_fn”,该方法利用了“ on_any_event”中的值。如果“dropbox_fn”方法在类之外,它将起作用吗? 我将用代码说明。 这里的主要问