Как вызвать метод наблюдателя из другого файла?

#java

#java

Вопрос:

Я новичок в Java и пытался запрограммировать файл, который вызывает из другого файла. Допустим, у меня есть файл A.java и у него есть метод observer

 //in Item.java

public class Item{
    private String name;
     
    //parametrized cons
    public Item(String name){
        this.name = name;    
    }

    public String getName(){
        return this.name;
    }
}
  

И допустим, в файле B.java Я хочу напечатать все Item.names, я думал, что это будет что-то вроде этого

 //in Bag.java
public class Bag {
    private int size;

    public void print(){
        // this does not work 
        System.out.println(Item.getName());
    }
}
  

Но это не сработало. Я вообще не могу изменить метод (имя) печати. Есть ли другой способ, которым это можно сделать?

Цель: Извините, если я не совсем ясно выражаюсь, цель состоит в том, чтобы напечатать имя элемента. Предполагая, что мы передали элемент в Item.java класс уже, как бы вы напечатали этот элемент?

Комментарии:

1. Пожалуйста, покажите полное содержимое обоих файлов. Как написано, «Наблюдатель» не отображается

2. Обновлено @OneCricketeer

3. @Progman Извините, все еще выясняю определения языка. Я обновил его снова, цель состоит в том, чтобы напечатать элемент, который был передан в Item.java из Bag.java

4. Вам нужен пакет для хранения некоторого элемента. Как вы планируете это делать? Другими словами, .getName() это метод экземпляра. Вам нужен экземпляр new Item() . Где в вашем коде вы это делаете?

Ответ №1:

Не ясно, как B узнает об A в вашем данном коде, но вы можете передать его при создании new B() через конструктор

 public class B {
  private A a;

  public B(A a) {
     this.a = a;
  }  

  public void print() {
    System.out.println(this.a.getName());
  }
}
  

Или вы можете определить статический метод в B, который принимает экземпляр A.

 public static void print(A a) {
   System.out.println(a.getName());
}
  

И вызвать B.print(a_instance)

Ответ №2:

 //in B.java
public void print(){
    System.out.println(new A().getName());
}
  

Комментарии:

1. Итак, в моем файле A у меня есть параметризованный конструктор A (ввод, input, input), когда я выполняю new A().getName(), он просит меня повторно ввести 3 ввода

2. таким образом, вы можете передать их следующим образом new A("some string value", 12, true) , просто убедитесь, что вы передаете значение в соответствии с типом данных, спасибо.