Java类“不能被解析为类型” [英] Java class "cannot be resolved to a type"

查看:234
本文介绍了Java类“不能被解析为类型”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我得到的错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:  
    TeamLeader cannot be resolved to a type

    at TeamLeadDemo.main(TeamLeadDemo.java:26)

这是我的代码:

import java.util.Scanner;

public class Employee {
    public String empName, empNumber, hireDate;    

    public class TeamLeadDemo {}

    public Employee(String empName, String empNumber, String hireDate) {
        this.setEmpName(empName);
        this.setEmpNumber(empNumber);
        this.setHireDate(hireDate);
    }

    public void setEmpName(String empName) {
         this.empName = empName;
    }
        public void setEmpNumber(String empNumber) {
         this.empNumber = empNumber;
    }
    public void setHireDate(String hireDate) {
         this.hireDate = hireDate;
    }
    public String getEmpName() {
        return empName;
    }
    public String getEmpNumber() {
        return empNumber;
    }
    public String getHireDate() {
        return hireDate;
    }

    public class ShiftSupervisor extends Employee {
        public double annualSalary, annualProduction;
        //constructor
        public ShiftSupervisor(String empName, String empNumber,
                               String hireDate, double annualSalary,
                               double annualProduction) {
            super(empName,empNumber, hireDate);
            this.setAnnualSalary(annualSalary);
            this.setAnnualProduction(annualProduction);
        }

        public double getAnnualSalary() {
            return annualSalary;
        }
        public double getAnnualProduction() {
            return annualProduction;
        }
        public void setAnnualSalary(double annualSalary) {
            this.annualSalary = annualSalary;
        }
        public void setAnnualProduction(double annualProduction) {
            this.annualProduction = annualProduction;
        }

        public String toString() {
            return "Name: "+ getEmpName() + "\nEmpID: "+ getEmpNumber()
                   + "\nHire Date: "+ getHireDate() + "\nAnnual Salary: "
                   + annualSalary + "\nProduction: "+ annualProduction;
        }

        public class employeeStart {
            public void main(String[] args) {
                String name, id, date;
                double sal, prod;

                //create scanner object
                Scanner keyboard = new Scanner(System.in);

                //inputting data
                System.out.println("Enter Name: ");
                name = keyboard.nextLine();
                System.out.println("Enter id: ");
                id = keyboard.nextLine();
                System.out.println("Enter Hire Date: ");
                date = keyboard.nextLine();
                System.out.println("Enter Annual: ");
                sal = keyboard.nextDouble();
                System.out.println("Enter production: ");
                prod = keyboard.nextDouble();

                //instantiating object
                ShiftSupervisor pw = new ShiftSupervisor(name, id, date, sal, prod);

                //outputting data
                System.out.println("Employee Details: \n" + pw);
            }
        }
        public class TeamLeader {
            public double monthlyBonus;
            public int minTraining, trainingPresent;    

            public TeamLeader(double monthlyBonus, int minTraining, int trainingPresent) {
                this.setMonthlyBonus(monthlyBonus);
                this.setMinTraining(minTraining);
                this.addtrainingPresent(trainingPresent);                    
            }

            public void setMonthlyBonus(double monthlyBonus) {
                this.monthlyBonus = monthlyBonus;
            }
            public void setMinTraining(int minTraining) {
                this.minTraining = minTraining;
            }
            public void setTrainingPresent(int t) {
                trainingPresent = t;
            }
            public void addtrainingPresent(int hours) {
                trainingPresent += hours;
            }
            public double getMonthlyBonus() {
                return monthlyBonus;
            }
            public int getMinTraining() {
                return minTraining;
            }
            public int getTrainingPresent() {
                return trainingPresent;
            }
            public String toString() {
                return "Bonus: "+ getMonthlyBonus() + "\nMinimum Training: "
                + getMinTraining() + "\nAttendence: "+ getTrainingPresent();
            }
        }
    }
}

另外,我在一个单独的类中声明这个:

In addition, I declared this in a separate class:

import java.util.Scanner;

public class TeamLeadDemo extends Employee {
    public TeamLeadDemo(String empName, String empNumber, String hireDate) {
        super(empName, empNumber, hireDate);
        // TODO Auto-generated constructor stub
    }

public static void main(String[] args) {
    double sal;
    int min, atten;

    //create scanner object
    Scanner keyboard = new Scanner(System.in);

    //inputting data
    System.out.println("Enter minimum training: ");
    min = keyboard.nextInt();
    System.out.println("Enter id: ");
    atten = keyboard.nextInt();
    System.out.println("Enter Bonus: ");
    sal = keyboard.nextDouble();

    //instantiating object
    ShiftSupervisor pw = new TeamLeader(sal, min, atten);

    //outputting data
    System.out.println("Employee Details:\n" + pw);

    }
}

我可以解决它吗?

编辑:缩进,空白,命名约定和可读性问题已经解决了。

Indentation, whitespace, naming conventions and readability issues have been somewhat addressed.

推荐答案

问题是 TeamLeader 似乎是一个内部类(很难说,你的缩进是坏的),因为它不是静态,你不能实例化它自己。

The problem is that TeamLeader appears to be an inner class (hard to tell, your indentation is bad), and since it's not static, you can't instantiate it by itself.

你需要使 TeamLeader 自己的类,使它成为 static 类并将其实例化为 Employee.TeamLeader (或者无论父类是什么,在这里没有帮助。)

You either need to make TeamLeader its own class, or make it a static class and instantiate it as Employee.TeamLeader (or whatever the parent class is, your indentation is really not helpful here).

这篇关于Java类“不能被解析为类型”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆