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


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

Re: Overloading methods question

Path csiph.com!weretis.net!feeder4.news.weretis.net!news.albasani.net!.POSTED!not-for-mail
From Martin Gregorie <martin@mydomain.invalid>
Newsgroups comp.lang.java.programmer
Subject Re: Overloading methods question
Date Sat, 27 Oct 2018 22:36:53 +0000 (UTC)
Organization albasani.net
Lines 93
Message-ID <pr2pa5$sql$1@news.albasani.net> (permalink)
References <pqqmoq$jeo$1@dont-email.me> <1b2bqd7oqzez6$.sfpve8lwmic2.dlg@40tude.net> <pqt6v0$e65$1@dont-email.me> <75ad8b55-3def-4ec1-b46b-65ecd971d0fe@googlegroups.com> <pqtdpa$nl4$1@dont-email.me> <pqtg50$ga7$1@news.albasani.net> <pqtluk$gg9$1@gioia.aioe.org> <pqtnjm$abo$1@news.albasani.net> <pquv2d$6p2$1@dont-email.me> <pqvq6t$cah$1@news.albasani.net> <pr0d83$r6t$1@gioia.aioe.org>
Mime-Version 1.0
Content-Type text/plain; charset=UTF-8
Content-Transfer-Encoding 8bit
X-Trace news.albasani.net ELX4Z4DMVJZCttQ3mELR/J6Y2RAa2cUP5zFppuagO0TFpLkvTdBlenY22xRalTOM50x3+hs8HVbzQXBnmkHIPLFp8jeKjvTXPwIZh2Hvg8wZNoMTl3QjEUE40ZnS60L7
NNTP-Posting-Date Sat, 27 Oct 2018 22:36:53 +0000 (UTC)
Injection-Info news.albasani.net; logging-data="dN0T+lAnTT753iLYFqju+F62lcNnYDKL6PHuwEE+5pd7SSH541auZH8DE3fFeIQaVWcgWnegUDW8XRg7CjH8zeel+JVQySKGYBGhUAWKoT+ahdAAay7OsRAv2Denyu8o"; mail-complaints-to="abuse@albasani.net"
User-Agent Pan/0.145 (Duplicitous mercenary valetism; d7e168a git.gnome.org/pan2)
Cancel-Lock sha1:VoaxYDS+EKYrNoIMpsTeSDsq9eE=
Xref csiph.com comp.lang.java.programmer:38667

Show key headers only | View raw


On Fri, 26 Oct 2018 20:58:44 -0400, Arne Vajhøj wrote:

> On 10/26/2018 3:33 PM, Martin Gregorie wrote:
>> I haven't (so far) used Enums and it wasn't obvious from the tutorial
>> stuff that you can put a public Enum inside a class - rather the
>> opposite in fact, since at one point it said that an enum declaration
>> was at a similar language level to a class declaration,
> 
> It is.
> 
>>                                        which is why I thought it
>> could not be declared inside a class definition.
> 
> You can put a class declaration inside a class.
> 
Yes indeed, but as I found out it seems not so simple to access it from 
outside. The following shows how I wanted to declare and use a enum, i.e. 
as a direct a replacement for the set of public static final ints). 
Here's an SSCCE that shows the problem. 

public class EnumWrapper
{
   public enum MyEnum { ONE, TOO, TREE };

   public static void main(String args[])
   {
      for (MyEnum x: MyEnum.values())
         printVal(x);
   }

   public static void printVal(MyEnum v)
   {
      System.out.println("printval(" + v + ")");
   }      
}

This works as expected with the enum used inside its declaring class:
$ java EnumWrapper
printval(ONE)
printval(TOO)
printval(TREE)
 
BUT, I also want to use it as a parameter when calling a methods in the 
class where the enum is declared, IOW exactly how I'd use a public static 
final int declared in the class:

public class TestRun
{
   public static void main(String args[])
   {
      EnumWrapper ew = new EnumWrapper();

      ew.printval(MyEnum.ONE);
   }
}

... and this won't compile:

This works as expected if the enum is being used inside its declaring 
class:
$ javac TestRun.java 
TestRun.java:7: error: cannot find symbol
      ew.printval(MyEnum.ONE);
                  ^
  symbol:   variable MyEnum
  location: class TestRun
1 error

and, if I replace 'MyEnum' with "EnumWrapper", the name of the class,
it still fails to compile:
$ javac TestRun.java 
TestRun.java:7: error: cannot find symbol
      ew.printval(EnumWrapper.ONE);
                             ^
  symbol:   variable ONE
  location: class EnumWrapper
1 error

Moving the enum to a separate file containing nothing except a package 
name specifier and the public enum declaration obviously works, but is 
not what I want since it separates the constants in the declaration from 
the code that accepts them as method arguments.

I understood, or thought I did, from earlier parts of this thread that it 
should be possible to do what I want, i.e. declare a public enum within 
the class whose methods are controlled by the enum values. I've checked 
various sources on the interwebs including the Oracle tutorial, but 
didn't find anything there, so - what have I missed or misunderstood?


-- 
Martin    | martin at
Gregorie  | gregorie dot org

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Overloading methods question Rhino <no_offline_contact@example.com> - 2018-10-24 17:04 -0400
  Re: Overloading methods question Arne Vajhøj <arne@vajhoej.dk> - 2018-10-24 18:56 -0400
  Re: Overloading methods question Joerg Meier <joergmmeier@arcor.de> - 2018-10-25 10:13 +0200
    Re: Overloading methods question Rhino <no_offline_contact@example.com> - 2018-10-25 15:53 -0400
      Re: Overloading methods question Eric Douglas <e.d.programmer@gmail.com> - 2018-10-25 13:58 -0700
        Re: Overloading methods question Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-10-25 17:49 -0400
          Re: Overloading methods question Martin Gregorie <martin@mydomain.invalid> - 2018-10-25 22:29 +0000
            Re: Overloading methods question Arne Vajhøj <arne@vajhoej.dk> - 2018-10-25 20:08 -0400
              Re: Overloading methods question Martin Gregorie <martin@mydomain.invalid> - 2018-10-26 00:37 +0000
                Re: Overloading methods question Arne Vajhøj <arne@vajhoej.dk> - 2018-10-25 21:42 -0400
                Re: Overloading methods question Joerg Meier <joergmmeier@arcor.de> - 2018-10-26 12:46 +0200
                Re: Overloading methods question Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-10-26 07:50 -0400
                Re: Overloading methods question Martin Gregorie <martin@mydomain.invalid> - 2018-10-26 19:33 +0000
                Re: Overloading methods question Eric Douglas <e.d.programmer@gmail.com> - 2018-10-26 13:13 -0700
                Re: Overloading methods question Arne Vajhøj <arne@vajhoej.dk> - 2018-10-26 20:58 -0400
                Re: Overloading methods question Martin Gregorie <martin@mydomain.invalid> - 2018-10-27 22:36 +0000
                Re: Overloading methods question Arne Vajhøj <arne@vajhoej.dk> - 2018-10-27 19:38 -0400
                Re: Overloading methods question Martin Gregorie <martin@mydomain.invalid> - 2018-10-28 10:39 +0000
                Re: Overloading methods question Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-10-28 07:54 -0400
          Re: Overloading methods question Eric Douglas <e.d.programmer@gmail.com> - 2018-10-26 06:26 -0700
      Re: Overloading methods question Joerg Meier <joergmmeier@arcor.de> - 2018-10-26 12:52 +0200
        Re: Overloading methods question Rhino <no_offline_contact@example.com> - 2018-10-26 22:10 -0400
          Re: Overloading methods question Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-10-27 07:43 -0400
            Re: Overloading methods question Rhino <no_offline_contact@example.com> - 2018-10-29 14:40 -0400
              Re: Overloading methods question Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-10-29 16:39 -0400
          Re: Overloading methods question Eric Douglas <e.d.programmer@gmail.com> - 2018-10-29 05:07 -0700
            Re: Overloading methods question Rhino <no_offline_contact@example.com> - 2018-10-29 14:41 -0400
  Re: Overloading methods question Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-10-25 07:49 -0400
    Re: Overloading methods question Rhino <no_offline_contact@example.com> - 2018-10-25 16:07 -0400

csiph-web