Path: csiph.com!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Andreas Leitgeb Newsgroups: comp.lang.java.programmer Subject: Re: Using main from abstract class in concrete class Date: Sun, 13 Aug 2017 11:38:18 -0000 (UTC) Organization: A noiseless patient Spider Lines: 26 Message-ID: References: <87h8xbx0ig.fsf@munus.decebal.nl> Reply-To: avl@logic.at Injection-Date: Sun, 13 Aug 2017 11:38:18 -0000 (UTC) Injection-Info: mx02.eternal-september.org; posting-host="c9f2ba19e1c5daa470c6851ce1636ea3"; logging-data="14277"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1839fnid8tGEzz26alG+QVt" User-Agent: slrn/1.0.2 (Linux) Cancel-Lock: sha1:LlF5A24GlHDHSTNmugugMXzO4y0= Xref: csiph.com comp.lang.java.programmer:37176 Andreas Leitgeb wrote: > Cecil Westerhof wrote: >> I have an abstract class. There can be several concrete classes that >> extend this class. Is it possible to write a main in the abstract >> class which will be used by the concrete classes and that in the main >> a instance of the concrete class is created? > > The first part of the question is trivially yes: derived classes that > don't provide their own main() will get your "abstract" class's main(). > I guess, you knew that already. > > For the other part, > https://stackoverflow.com/questions/939932/how-to-determine-main-class-at-runtime-in-threaded-java-application > seems to imply that short of some non-reliable environment variables > or system properties there is no reliable way to know which class was > originally started. maybe a workaround: Make your abstract class the real main class, and just pass it the name of the requested subclass as first argument: java your.path.AbstractMain users.path.ConcreteSub ... (and write the AbstractMain.main method accordingly)