2009-07-22 6 views
1

Hmmm. J'essaye d'écrire une classe qui accepte des octets, et voudrais mettre en application une interface bien connue à cette fin.recherche d'interface pour quelque chose comme Appendable ou OutputStream

java.io.OutputStream est une classe abstraite, pas une interface (pourquoi ???) et cela me rend nerveux, car je ne sais pas quelles sont les conséquences de l'étendre. S'il n'y a pas de conséquences, cela aurait dû être une interface. Sinon, il me fait penser qu'il définit equals() et hashCode() ou peut-être l'un des comportements liés Serializable, et il y a quelque chose que je devrais savoir avant d'essayer de l'étendre. Quoi qu'il en soit, si je le prolonge, cela signifie que j'ai utilisé ma super-classe 1 et que je ne peux pas étendre quelque chose d'autre qui est plus important pour mon application.

java.lang.Appendable est une interface qui fait ce que je veux, mais pour les caractères, pas les octets.

java.nio.WritableByteChannel est en quelque sorte ce que je veux, et je pourrais l'utiliser, mais il n'accepte que les ByteBuffers comme entrées, et non comme byte [].

D'autres suggestions/conseils? (p.s. "input-output" est-il la meilleure balise pour les questions d'E/S?)

+0

Je crains de ne pas comprendre pourquoi vous êtes nerveux à l'idée d'étendre 'OutputStream'. Pourriez-vous élaborer? (Je me sens comme un thérapeute!) –

+0

Je suis d'accord. Il n'y a pas tellement de choses dans OutputStream. donc vous devriez être bien;] – pablochan

+0

:-) voir ci-dessus. –

Répondre

1

java.io.DataOutput peut fonctionner pour vous, bien qu'il ait beaucoup plus de méthodes que vous ne le demandiez.

+0

merci! –

1

Pourquoi voulez-vous utiliser une interface bien connue?

Il n'y a pas de mal à créer votre propre interface pour votre usage.

En outre, je n'appellerais pas Appendable ou WritableByteChannel 'bien connu'.

+2

Pourquoi? Parce que l'utilisation d'une interface standard peut réduire le couplage entre les composants de votre application. – skaffman

+0

Comment une interface standard réduirait-elle le couplage plus d'un des siens? – jjnguy

+1

Étant donné qu'une interface standard peut déjà être présente dans les deux composants et ne nécessite donc pas de dépendance de compilation entre les deux. – skaffman

1

Il ne devrait pas y avoir de problèmes d'extension de java.io.OutputStream. Il est conçu pour être utilisé comme classe de base. Si vous êtes inquiet, jetez un oeil au code source de OutputStream. Ma seule question est de savoir si l'API OutputStream correspond à vos exigences d'application, ou si une API différente pourrait être plus appropriée. Personne ne se plaindra si vous concevez votre propre interface qui est plus proche des exigences de votre application.

Questions connexes