2015-03-24 3 views
0

Так что у меня большая проблема. Я получаю ошибку «не могу создать экземпляр типа Robot», когда пытаюсь создать новый экземпляр класса Robot. Я полностью понимаю, что означает эта ошибка, и когда это происходит, но я не понимаю, почему я ее получаю. Клянусь, мой код верен. Может быть, в коде есть одна небольшая ошибка, которую я просто не вижу? Любая помощь?Невозможно создать экземпляр ошибки типа ... но код правильный?

код получает ошибку класс RobotWorld:

public class RobotWorld extends JPanel{ 

Robot robot; 

private static final long serialVersionUID = 1L; 

    public RobotWorld(){ 
     robot = new Robot(); 
     this.setBackground(Color.GREEN); 
    } 
} 

А класс Robot.java является:

public class Robot { 

    public Robot(){ 

    } 

} 

Я получаю ошибку на линии «робот = новый робот ();» в коде RobotWorld.java. В принципе, везде, где я пытаюсь создать экземпляр нового объекта Robot в RobotWorld, это даст мне ошибку. Я даже попытался сделать это, когда я создал экземпляр переменной робота, все еще не работает.

Оба эти класса находятся в одном пакете, поэтому я не вижу, как это может быть какая-то ошибка класса. Может ли кто-нибудь сказать мне, почему я получаю эту ошибку?

Примечание. Я несколько раз перезапустил Eclipse, чтобы убедиться, что это не просто действие Eclipse.

Спасибо!

+1

Возможно ли, что вы случайно определили «робот» в нескольких местах? Например, возможно ли, что 'RobotWorld' содержит' частный интерфейс Robot {...} 'где-то или что-то в этом роде, которое вы намеревались удалить, а затем забыл? (Чтобы проверить это, нажмите «Робот» в роботе Robot ;, а затем нажмите F3, чтобы перейти к объявлению, которое, по мнению Eclipse, применимо.) – ruakh

ответ

0

UPDATE:

Похоже, вы, возможно, импортировал import com.sun.glass.ui.Robot; который является абстрактным классом, а не будут создаваться.

Обязательно удалите любые операторы импорта за неправильный класс робота.

Возможно, вы захотите рассмотреть возможность переименования своего класса Robot, чтобы не путать их с толку.

+0

Если его класс представляет робота, зачем ему переименовывать его? В конце концов, это пространство имен. + даже если он использовал 'Java.awt.Robot', ошибка не должна появляться с awt.Robot не является абстрактной и должна быть инстантабельной. – Rouby

+0

Вы не можете создать экземпляр класса Robot точно так же, как вы получите ошибку компилятора, так как вы не поймаете исключение AWTException, которое оно может выбросить. Мы не знаем его точной ошибки, так как он не опубликовал ее. Кроме того, это была просто рекомендация по предотвращению путаницы. Я не понимаю, почему вы будете снижать ставку. – chrissukhram

+0

Rouby, на самом деле выглядит так, как будто я был прав, он импортировал неправильный класс Robot, только кажется, что он импортировал 'import com.sun.glass.ui.Robot;' – chrissukhram