2010-07-27 5 views
-1

Une partie d'un grand projet sur lequel je travaille est intéressante et potentiellement utile pour les autres, alors j'essaie de sortir un morceau de code et le libérer comme son propre projet. L'une de ses dépendances sur le reste de la base de code est une interface qui ressemble à ceci:Recherche d'une bibliothèque Java avec une interface contenant une méthode à un seul argument vide

public interface Body { 
    void eval(A value); 
}

je figure, plutôt que de réinventer ce type, il est probablement préférable d'introduire une dépendance à une bibliothèque couramment utilisée qui a déjà il. J'ai regardé à travers guava et commons-lang, et je suis surpris de ne rien trouver de pareil. Des idées sur où d'autre je pourrais regarder?

+0

Désolé, ce ...? –

+0

Java est tout au sujet de la signification d'un type. C'est nominatif, pas structurel. Je suggère de déclarer proprement un type avec une signification appropriée. –

Répondre

0

Je pense que cela est une mauvaise idée, mais:

extra166y.Ops.Procedure 

Je suis sûr que vous pouvez trouver des choses semblables dans les bibliothèques « fonctionnelles » (même si la procédure est un peu l'antonyme de fonctionnement).

+0

J'apprécie ces sentiments en général, mais ... Dans certains cas, il est tout à fait raisonnable d'écrire Java assez abstrait pour utiliser un type comme celui-ci. –

2

Si c'est la seule chose que vous voulez, je n'aurais pas pris la peine de placer toute une dépendance pour ça. J'ai tendance à adopter le nom de projets déjà existants, de sorte que ce sera plus facile pour d'autres programmeurs. Par exemple, pour Predicate j'ai écrit ma propre interface mais j'ai choisi le nom qui devrait être familier aux utilisateurs de Guava.

Les dépendances sont volumineuses et il vaut mieux en avoir le moins possible. D'un autre côté, il n'est pas recommandé de réinventer les choses, donc je pense qu'il y a quelque part un équilibre entre les coûts et les avantages.

Pour moi, le besoin de cette interface unique ne l'emporte pas sur le coût de l'apport de toute une dépendance. Par grande marge d'ailleurs.

+0

Je ne pensais pas avoir besoin de justifier toutes les raisons de ma question, mais mon but est aussi de rechercher des idées/codes qui pourraient être utiles. Je n'ajoute pas de dépendance de projet pour une classe. –

+0

Je ne voulais pas vous critiquer ou quoi que ce soit. C'est juste que je l'ai trouvé non justifiable du point de vue des coûts et des avantages. Je suppose que je n'ai pas très bien compris votre question. –

0

Il ne serait pas logique d'introduire une dépendance sur une bibliothèque tierce pour une seule interface. Il vaudrait mieux utiliser une interface dans la bibliothèque standard. Que diriez-vous de Map?

Predicate <A> extends HashMap < A , Void > 
{ 
    public Void put (A a , Void v) 
    { 
      // put your evaluation logic here 
      return null ; 
    } 
} 

Mais je ne vois vraiment pas comment cela peut aider quelqu'un.

Questions connexes