Я пытаюсь реализовать интерфейс, но получаю исключение «Null-pointer», но я не знаю, почему, и я не знаю, как избежать это.Почему возникает исключение «Null-pointer exception»?
класс SpaceComposite.java
import java.util.List;
public class SpaceComposite extends SpaceComponent implements ISpaceComposite {
private List<ISpaceComponent> _components;
public SpaceComposite(String _title) {
super(_title);
// TODO Auto-generated constructor stub
}
@Override
public void addComponent(ISpaceComponent component) {
_components.add(component);// HERE IS THE EXCEPTION RAISED
}
}
который derrives из класса SpaceComponent
public abstract class SpaceComponent implements ISpaceComponent{
private String _title;
public SpaceComponent(String _title) {
super();
setTitle(_title);
}
интерфейс ISpaceComposite derrives из ISpaceComponent
public interface ISpaceComposite extends ISpaceComponent{
public void addComponent(ISpaceComponent component);
}
public interface ISpaceComponent {
// Title getter/setter
String getTitle();
void setTitle(String title);
// Looking for a specific child
ISpaceComponent findChild(String name);
// We need to test this brave new world
void runTtest();
}
класс Demo.class пытается создать SpaceComposite
public static ISpaceComposite createSolarSystem() {
ISpaceComposite solarSystem = new SpaceComposite("The Solar System");
Star theSol = new Star("Sol");
solarSystem.addComponent(theSol);
}
Эта строка генерирует исключение
public void addComponent(ISpaceComponent component) {
_components.add(component);// HERE IS THE EXCEPTION RAISED
}
но компонент «компонент» передается в функцию, и я не могу обратитесь к классу List.
Знаете ли вы, что я делаю неправильно?
P.S. Этот код был принят с C# .NET и в .NET нет ошибок.
P.P.S. Ребята! Ты прав! Но так много правильных ответов .... На самом деле путают, что я должен отметить