Also default methods in Java 8 might be what we're looking for in the cases where we want this for backward compatibility:
https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html - Bob On Tue, Feb 9, 2016 at 10:40 AM, Mattmann, Chris A (3980) < chris.a.mattm...@jpl.nasa.gov> wrote: > Hey Ken, > > My general preference in these situations is to use an interface; > then to provide an abstract base class, and encourage some limited > method implementation and basic functionality to bubble up into > the abstract base class that implements that interface. Then we > can encourage non-API changes to the abstract base class; API (possibly > but not guaranteed to be breaking) changes to the interface, and > so forth. > > So, TL;DR I would prefer interface + abstract base class, but maybe > that’s just me. > > Cheers, > Chris > > CC/Trevor - FYI Trevor, please talk to Ken since he is working on > what I had assigned you to do as well - aka the LanguageIdentifier > refactor/interface. > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > Chris Mattmann, Ph.D. > Chief Architect > Instrument Software and Science Data Systems Section (398) > NASA Jet Propulsion Laboratory Pasadena, CA 91109 USA > Office: 168-519, Mailstop: 168-527 > Email: chris.a.mattm...@nasa.gov > WWW: http://sunset.usc.edu/~mattmann/ > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > Adjunct Associate Professor, Computer Science Department > University of Southern California, Los Angeles, CA 90089 USA > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > > > > -----Original Message----- > From: Ken Krugler <kkrugler_li...@transpac.com> > Reply-To: "dev@tika.apache.org" <dev@tika.apache.org> > Date: Tuesday, February 9, 2016 at 8:34 AM > To: "tika-...@lucene.apache.org" <tika-...@lucene.apache.org> > Subject: Use of interface vs. abstract class > > >Hi all, > > > >In general I see open source projects using abstract classes for > >extension points, as that provides for a migration path in the event of > >an API change, versus breaking any code that has implemented the > >interface. > > > >I see some interfaces being used in Tika, e.g. Translator. > > > >Does the ServiceLoader require that these be interfaces? I assume not, as > >isAssignableFrom() should work with either interfaces or abstract > >classes, right? > > > >Asking because I'm looking at the language detector API for 2.x. > > > >Thanks, > > > >-- Ken > > > > > > > >-------------------------- > >Ken Krugler > >+1 530-210-6378 > >http://www.scaleunlimited.com > >custom big data solutions & training > >Hadoop, Cascading, Cassandra & Solr > > > > > > > > > > > >