Come creare un modulo pubblico che possa eseguire alcune funzioni comuni in java?


Come chiesto nel titolo, posso creare una classe pubblica 'comune' e alcuni public static foo() in essa? Grazie!

Author: herbertD, 2010-10-18

5 answers

Sì, puoi.

Dove vedi esattamente le difficoltà?

Puoi vedere le classi di utilità popolari (come StringUtils) in Jakarta Commons Lang per un esempio. È probabile che alcune delle funzioni molto comuni a cui stai pensando siano già presenti in una delle librerie della famiglia Commons.

 2
Author: Thilo, 2010-10-18 06:23:12

Breve e facile: sì.

(ma perché non l'hai semplicemente provato?)

 3
Author: oezi, 2010-10-18 06:19:54

Un modo comune è dichiarare una classe di utilità come questa

package my.package;

public class Utility {

  private Utility() {
  }

  public static void foo() {
  }

}

Se questa classe è sul tuo classpath puoi sempre farlo da ovunque

my.package.Utility.foo();
 3
Author: PeterMmm, 2010-10-18 06:22:24

Sì...Puoi farcela..

 3
Author: rgksugan, 2010-10-18 06:24:54

Se hai il minimo dubbio che i tuoi requisiti possano cambiare, potresti aver bisogno di versioni diverse di alcuni metodi per testare ecc., quindi utilizzare un'interfaccia e una classe, ad esempio:

public interface Utils {
  public final static Utils INSTANCE = new MyUtils();
  Foo makeFoo();
  Bar transform(Foo foo) 
}

public class MyUtils implements Utils {
  public Foo makeFoo() { return new Foo(); }
  public Bar transform(Foo foo) { return new Bar(foo); } 
}

Questo rende facile passare ad altre implementazioni. E avrai meno problemi quando deciderai di iniziare a usare un framework DI come Guice:

public class Client {
  private final Utils util;

  @Inject
  Client(Utils utils) {  //<--- Here Guice will inject for you what you specified
    this.utils = utils; 
  }  
}
 0
Author: Landei, 2010-10-18 07:53:26