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!
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.
Breve e facile: sì.
(ma perché non l'hai semplicemente provato?)
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();
Sì...Puoi farcela..
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;
}
}