как создать экземпляр нестатического метода, который имеет проводной объект и находится в другом файле - PullRequest
0 голосов
/ 30 января 2011

У меня проблемы с вызовом нестатического метода из другого файла.Мой основной файл называется jroff.java, а другой файл (в котором есть два метода, которые мне нужны) называется connectedqueue.java

В файле relatedqueue.java у меня есть следующий код:

class linkedqueue <item_t> {

   private  class node{
      item_t item;
      node link;
   }

   private  node front = null;
   private  node rear = null;

   public  boolean empty (){
      return front == null;
   }

   public void insert (item_t any) {
      node temp = new node();
      temp.item = any;
      temp.link = null;
      if(rear == null) front = temp;
              else rear.link = temp;
  rear = temp;
   }

 public item_t remove (){
      item_t value;
      if (empty ()) throw new NoSuchElementException ();
      value = front.item;
      front = front.link;
      if(front == null) return null;
                    else return value;
   }

}

Вот как я пытаюсь запустить вставку в моем главном файле:

 for (String word: words) linkedqueue.insert(word);

Я правильно понял имя файла, но как именно я могу создать экземпляр чего-то подобного?Вот где я использую insert:

   String value;
   while(value != null){
       value = linkedqueue.remove().toString();

remove возвращает item_t, и я хочу это в строке.последний узел будет иметь значение null, то есть когда цикл должен остановиться.

Спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 30 января 2011

Нет такой вещи, как вызов метода из другого файла.В Java вы определяете классы и можете взаимодействовать с нестатическими методами класса, создавая экземпляр этого класса с ключевым словом new.

Я настоятельно рекомендую либо читать Java вNutshell или учебник Java .Это прояснит ситуацию.

0 голосов
/ 30 января 2011

Есть несколько проблем с этим кодом:

  1. Соглашение об именах в Java должно иметь имена классов, начинающиеся с заглавной буквы, и переменные, начинающиеся со строчной буквы. Это важно здесь, потому что это может быть источником путаницы для вас.

  2. linkedqueue.insert(word); выглядит как допустимая команда, но вы на самом деле пытаетесь вызвать нестатический метод для объекта Class. Это невозможно. Вы должны создать экземпляр класса, прежде чем пытаться это:

    linkedqueue lq = new linkedqueue();
    

    , а затем выполните все свои действия на lq.

  3. Исходя из вашей собственной спецификации, следующее выкинет NullPointerException по замыслу, если он когда-либо преодолевал несколько проблем:

     String value;
       while(value != null){
         value = linkedqueue.remove().toString();
      }
 
  • переменная в методе должна быть инициализирована перед использованием.
  • , если оно было инициализировано null, ваше тело вашего while никогда не будет выполнено. Вместо этого рассмотрим do{}while().
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...