Java: получение необязательного приведения требует предупреждения - PullRequest
0 голосов
/ 21 сентября 2019

Я пытаюсь написать общее определение класса для класса UniCourse, в котором хранятся студенты, зарегистрированные в курсе.

Создает UniCourse объекты, которые используют электронные письма учеников в качестве идентификаторов (например, abc123 :: (Тип String) или идентификатор ученика :: (Тип Integer).

I 'получаю это предупреждение:

необязательное приведение требуется: T [] найдено: java.lang.Object []

Может кто-нибудь объяснить, что это значит и как это исправить?

public class UniCourse<T> {
    private T[] students;

    public UniCourse (int size) {
    T[] students = (T[]) new Object[size];
  }
}

1 Ответ

0 голосов
/ 21 сентября 2019

Одним из решений было бы создание собственного студенческого класса, который содержит массив ваших данных в качестве объекта.Ваш класс ученика может выглядеть так:

public class Student<T> {
    protected Object[] data;

    public Student (int size) {
    this.data = new Object[size];
  }
}

Тогда в вашем классе UniCourse вы можете создать конструктор следующим образом:

public UniCourse(int size) {
  this.students = new Student<T>(size);
}

И, наконец, вы можете вызвать своего конструктора с помощью этой строки:

UniCourse<Integer> uniCourse = new UniCourse<Integer>(20);

Чтобы получить доступ к массиву данных, созданному в классе ученика, вы можете просто сделать что-то вроде этого:

this.students.data;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...