Comment faire un module public qui peut faire certaines fonctions communes en java?


Comme demandé dans title, puis-je créer une classe publique "commune" et quelques public static foo() dedans? Merci!

Author: herbertD, 2010-10-18

5 answers

Oui, vous pouvez.

Où voyez-vous exactement des difficultés?

Vous pouvez voir les classes d'utilité populaires (telles que StringUtils) dans Jakarta Commons Lang pour un exemple. Il y a de fortes chances que certaines des fonctions très courantes auxquelles vous pensez soient déjà présentes dans l'une des bibliothèques de la famille Commons.

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

Court et facile: oui.

(mais pourquoi ne l'avez-vous pas simplement essayé?)

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

Une façon courante est de déclarer une classe utilitaire comme celle-ci

package my.package;

public class Utility {

  private Utility() {
  }

  public static void foo() {
  }

}

Si cette classe est sur votre chemin de classe, vous pouvez toujours faire de partout

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

Oui...Vous pouvez le faire..

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

Si vous avez le moindre doute que vos exigences peuvent changer, que vous pourriez avoir besoin de différentes versions de certaines méthodes pour tester, etc., puis utiliser une interface et une classe, par exemple:

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); } 
}

Cela facilite le passage à d'autres implémentations. Et vous aurez moins de problèmes lorsque vous déciderez de commencer à utiliser un framework DI comme 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