Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #9078

Enum mixin?

Path csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!Xl.tags.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local2.nntp.dca.giganews.com!nntp.speakeasy.net!news.speakeasy.net.POSTED!not-for-mail
NNTP-Posting-Date Fri, 21 Oct 2011 16:19:35 -0500
Content-Type text/plain; charset="ISO-8859-1"
From "A. W. Dunstan" <no@spam.thanks>
Organization OptiMetrics, Inc.
Date Fri, 21 Oct 2011 17:19:29 -0400
User-Agent KNode/4.4.11
Content-Transfer-Encoding 7Bit
Newsgroups comp.lang.java.programmer
Subject Enum mixin?
Followup-To comp.lang.java.programmer
MIME-Version 1.0
Message-ID <WsudnUpWT_V6fDzTnZ2dnUVZ_vCdnZ2d@speakeasy.net> (permalink)
Lines 72
X-Usenet-Provider http://www.giganews.com
NNTP-Posting-Host 66.93.2.202
X-Trace sv3-auiYRtm03pShhdaaQCLaNXUFy4gbPUESGk/HYExrF/TA6dB8TZ5JCEqHdVCp+0PEEfgKZU2u7CQIaSg!YrThXK4awDguFiZy3lNGZf3kDB8bskboW1dg4wEflgTMgEvMPg8lwa8L7I+b70K4Gs6oqtytP7dt!cZ6bl6pTz6LQSDcJEHzwdVgKLbzo5cghGUU=
X-Abuse-and-DMCA-Info Please be sure to forward a copy of ALL headers
X-Abuse-and-DMCA-Info Otherwise we will be unable to process your complaint properly
X-Postfilter 1.3.40
X-Original-Bytes 3690
Xref x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:9078

Followups directed to: comp.lang.java.programmer

Show key headers only | View raw


I'm writing a GUI that's a wrapper around some Fortran code.  In one of the 
Fortran routines I pass in an integer that tells the Fortran code what kind 
of 'cloud model' to use (it's a big physics simulation).  For example:

value   meaning
-----   ---------
0       no clouds
1       cumulus
2       altostratus
18      cirrus

etc.  The Fortran is 3'rd party software so changing values & their meanings 
isn't an option.

I'd use a plain enum but the values passed in aren't continuous (as above - 
it skips from 2 up to 18), nor do they necessarily start at zero.  So I 
wrote my own enum where I could associate a name, a value and a description:

public enum CloudModel {
	None(0, "No clouds"),
	Cumulus(1, "Cumulus"),
	AltoStratus(2, "Altostratus"),
	Cirrus(18, "Cirrus");

	CloudModel(int value, String description)
	{
		m_value = value;
		m_desc = description;
	}

	public int getValue() { return m_value; }

	public String toString() { return "" + m_value + ": " + m_desc; }

	private int m_value;
	private String m_desc;
}


This works but I'm now up to six different enums (Cloud coverage, 
atmospheric model, haze, surface reflectance, etc), and they all look nearly 
the same.  Each one has identical getValue() and toString() methods, m_value 
and m_desc.  And the constructor varies only in it's name - the body of each 
constructor is the same.  Creating a new enum is easy - cut & paste, change 
the name of the constructor, type in the values and I'm done.

This works too, but code reuse by cut-and-paste worries me.  I'd like to 
extract the methods & member variables into a base class of some sort and 
extend that, providing the enumeration values in each derived enum.  BUT - I 
can't extend from an enum.  If I could put the common parts in a separate 
class and mix that in (as in Ruby) that'd be great, but Java isn't Ruby.

My code will be called from Matlab (which can access Java objects & methods 
directly) so I'd like to keep it as an enum.  And enums are easy to load 
into a JComboBox, which makes that part of the GUI code cleaner.

I'm ok with leaving it the way it is, but does anyone know of a better 
approach?  Preferably one that's not so complex that it's worse than my 
current state of affairs?


-- 
Al Dunstan, Software Engineer
OptiMetrics, Inc.
3115 Professional Drive
Ann Arbor, MI  48104-5131

"There are two ways of constructing a software design.  One way is to
make it so simple that there are obviously no deficiencies.  And the
other way is to make it so complicated that there are no obvious
deficiencies."
            - C. A. R. Hoare

Back to comp.lang.java.programmer | Previous | NextNext in thread | Find similar


Thread

Enum mixin? "A. W. Dunstan" <no@spam.thanks> - 2011-10-21 17:19 -0400
  Re: Enum mixin? Robert Klemme <shortcutter@googlemail.com> - 2011-10-21 23:37 +0200
    Re: Enum mixin? markspace <-@.> - 2011-10-21 16:16 -0700
      Re: Enum mixin? Robert Klemme <shortcutter@googlemail.com> - 2011-10-23 11:44 +0200
        Re: Enum mixin? Lew <lewbloch@gmail.com> - 2011-10-23 08:45 -0700
    Re: Enum mixin? "A. W. Dunstan" <no@spam.thanks> - 2011-10-24 09:23 -0400
  Re: Enum mixin? Roedy Green <see_website@mindprod.com.invalid> - 2011-10-22 18:10 -0700

csiph-web