Как я мог запустить этот простой код в JDK 8.? - PullRequest
0 голосов
/ 01 мая 2020

Может кто-нибудь сказать мне, как скомпилировать этот код, используя JDK 8. Я пытался, но это сбивало меня с толку из-за классов * publi c, определенных в коде. Я сохраняю файл кода с обоими именами классов publi c, но он не работает. Код выглядит следующим образом:

public class Test{
  public static void main(String args[]){
    Person j;
    j=new Person("John");
    j.setAge(20);
    celebrateBirthday(j);
    System.out.println(j.getAge());
  }

  static void celebrateBirthday(Person p){
    p.setAge(p.getAge() + 1);
  }
}

public class Person{
  private String name;
  private int age;

  Person(String n){
    this.name = n;
  }

  public int getAge(){
    return age;
  }

  public void setAge(int a){
    this.age = a;
  }
} 

Компилятор отображает ошибку следующим образом:

C:\Users\soman\Desktop>javac Test.java
Test.java:15: error: class Person is public, should be declared in a file named Person.java
public class Person{
             ^
1 error

Примечание. Я использую JDK (1.8) в 32-разрядной системе.

Ответы [ 2 ]

0 голосов
/ 02 мая 2020
Исходный файл

A Java может иметь только один класс, объявленный как publi c, мы не можем объединить два или более классов publi c в файл. java. Это из-за ограничения , что имя файла должно совпадать с именем класса publi c с расширением. java. Если мы хотим, чтобы несколько рассматриваемых классов были объявлены как publi c, мы должны сохранить их в отдельных исходных файлах и прикрепить оператор пакета как первый оператор в этих исходных файлах.

В вашем коде Вы должны объявить свой класс Person как

public class Test{
  public static void main(String args[]){
    Person j;
    j=new Person("John");
    j.setAge(20);
    celebrateBirthday(j);
    System.out.println(j.getAge());
  }

  static void celebrateBirthday(Person p){
    p.setAge(p.getAge() + 1);
  }
}

 class Person{
  private String name;
  private int age;

  Person(String n){
    this.name = n;
  }

  public int getAge(){
    return age;
  }

  public void setAge(int a){
    this.age = a;
  }
} 

или создать отдельный файл для класса Person

0 голосов
/ 01 мая 2020

Каждый класс public должен находиться в отдельном файле, названном именем класса (это именно то, что означает сообщение об ошибке). Таким образом, один файл Test.java содержит public class Test и одно имя Person.java содержит public class Person.

...