不创建对象的java访问公共类方法

xlpyo6sf  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(269)

我是java初学者,我有一个drink类,其中有一个showall()方法来打印存储在私有哈希集中的所有drink对象。在我的主要功能中,我可以通过

Drink test = new Drink(value1 , value2 , ....);
test.showAll();

有没有一种方法可以访问showall()方法而不创建对象,因为我只想打印所有数组对象,而不需要每次打印时都创建一个新对象
饮料.java

private static HashSet<Drink> drinks = new HashSet(); //store all drinks in hashset 

  public void AddDrink(Drink d ){ //add a drink 
     try {
          drinks.add(d);
     }catch(Exception e ){
         System.out.println(e);
     }
  }

  public void showAll() {  //show all drinks 
      for(Drink d : drinks) {
          System.out.println(d);
      }
  }
n6lpvg4x

n6lpvg4x1#

因为在showall()方法中:

public void showAll() {  //show all drinks 
      for(Drink d : drinks) {
          System.out.println(d);
      }

您使用的唯一字段(即饮料)数据也是静态的:

private static HashSet<Drink> drinks = new HashSet(); //store all drinks in hashset

您可以将方法转换为静态:

public void static showAll(){...}

然后您可以将该方法称为 Drink.showAll() . 顺便说一句,您可以将showall方法缩短为:

public void showAll() {  //show all drinks 
      for(Drink d : drinks) {
          System.out.println(d);
      }
  }

只是:

public static void showAll() {
        drinks.forEach(System.out::println);
    }

通过组合 forEachmethod reference .
在你目前的设计中, public void AddDrink(Drink d ) 也可以转化为静态方法(即。, public static void AddDrink(Drink d ) .
综上所述,@justanotherdeveloper在评论中提出了一个更好的类设计

相关问题