The answer is a big fat NO !!!
C++ cannot do this with first building a considerably
invasive frame work.
-----Original Message-----
From: Shawn Zhu [mailto:[EMAIL PROTECTED]]
Sent: Monday, November 27, 2000 3:08 PM
To: [EMAIL PROTECTED]
Subject: Re: finally, something interesting!
You are the men Joerg! So using Method class actually required Reflect.
When I tried this, I forgot to include java.lang.Relfect.
Now is there any C++ experts on this list that can confirm if C++ can
achieve the same?
> -----Original Message-----
> From: Joerg Meister [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, November 23, 2000 10:56 PM
> To: [EMAIL PROTECTED]
> Subject: AW: finally, something interesting!
>
>
> Hi,
>
> if you can't use inheritance or a interface, you have to use method
> invokation.
>
> public class Untitled1 {
>
> public static void main(String[] args)
> {
> Untitled1 test1 = new Untitled1();
> }
>
> public Untitled1() {
>
> Object o = new A();
> invokeDoShow(o);
>
> o = new B();
> invokeDoShow(o);
>
> o = new C();
> invokeDoShow(o);
> }
>
> private void invokeDoShow(Object o)
> {
> try {
> // search for the method with no params
> java.lang.reflect.Method m =
> o.getClass().getMethod("doShow",
> new Class[] {});
>
> if (m != null)
> try {
> // invokes the method with no params from
> the given
> object
> m.invoke(o, new Object[] {});
> } catch (Exception e)
> {
> /* IllegalAccessException - if the
> underlying method is
> inaccessible.
> IllegalArgumentException - if the
> number of actual
> and formal parameters differ, or if an unwrapping conversion fails.
> InvocationTargetException - if the
> underlying method
> throws an exception.
> NullPointerException - if the
> specified object is
> null and the method is an instance method.
> ExceptionInInitializerError - if the
> initialization
> provoked by this method fails. */
> e.printStackTrace();
> }
> } catch (NoSuchMethodException e) {
> e.printStackTrace();
> } catch (SecurityException e) {
> e.printStackTrace();
> }
> }
> }
>
> public class A{
> public void doShow() {
> System.out.println("A.doShow()");
> }
> }
>
> public class B{
> public void doShow() {
> System.out.println("B.doShow()");
> }
> }
>
> public class C{
> public void doShow() {
> System.out.println("C.doShow()");
> }
> }
> }
>
> Hope this helps
>
> Joerg Meister
>
> > -----Urspr�ngliche Nachricht-----
> > Von: A mailing list about Java Server Pages specification
> and reference
> > [mailto:[EMAIL PROTECTED]]Im Auftrag von Shawn Zhu
> > Gesendet: Donnerstag, 23. November 2000 00:17
> > An: [EMAIL PROTECTED]
> > Betreff: Re: finally, something interesting!
> >
> >
> > Yep Namratha, you got 2 of the 3 ways I know.
> > in summary,
> > I can sort of achieve what I asked in the following:
> > 1. interface
> > 2. class inheritance
> > 3. use of "InstanceOf"
> >
> > I've also thought about using Class and Method classes
> > Like Venkatesh had mentioned, however, that does not
> > work out. Because we'll be looking for a method doShow()
> > when we passed in Object which does not have such an method.
> > It fails at compile time as well.
> >
> > After the above said, now lets say if you were only give
> > Class A, B, And C, i.e. those class all have been created, like
> > those prepackaged classes, you can't change their implementations.
> > Now is it still possible to have a ShowAll method?
> >
> > > -----Original Message-----
> > > From: Namratha Reddy [mailto:[EMAIL PROTECTED]]
> > > Sent: Wednesday, November 22, 2000 1:54 PM
> > > To: [EMAIL PROTECTED]
> > > Subject: Re: finally, something interesting!
> > >
> > >
> > > You could accomplish this in one of many ways:
> > > 1. Create an interface with the signature of the 'doShow'
> > > method and make the
> > > classes A, B, and C implement this interface.
> > >
> > > 2. Use inheritance: Create a class X and have classes A, B,
> > > and C extend that
> > > class.
> > > and the doShow methods are defined as follows:
> > > in A:
> > > doShow()
> > > {
> > > System.out.println("Doshow method in Class A");
> > > }
> > >
> > > in B:
> > > doShow()
> > > {
> > > System.out.println("Doshow method in Class B");
> > > }
> > >
> > > in C:
> > > doShow()
> > > {
> > > System.out.println("Doshow method in Class C");
> > > }
> > >
> > > Then in the show method:
> > > public void show(X var)
> > > {
> > > var.doShow();
> > > }
> > >
> > > and in the calling method if you have the following:
> > > A var1 = new A();
> > > B var2 = new B();
> > > C var3 = new C();
> > >
> > > show(var1);
> > > show(var2);
> > > show(var3);
> > >
> > > The output will be as follows:
> > > Doshow method in Class A
> > > Doshow method in Class B
> > > Doshow method in Class C
> > >
> > > Hope this helps.
> > > > Scope: Java
> > > > Q:
> > > > if you have three class A, B, and C all have the same
> > > method doShow();
> > > > We only know that all inherit from Class Object (like all
> > > other classes do).
> > > >
> > > > Is it possible to have a public function that takes in an
> > > Class Object that
> > > > may belong
> > > > to A, B, or C, and call doShow()?
> > > >
> > > > Something conception like:
> > > >
> > > > public void show(Object o) {
> > > > o.doShow();
> > > > }
> > > >
> > > > Of course the above code won't compile. One way to hack it
> > > is to use
> > > > "InstanceOf" (one of the answer) but it's a unclean hack.
> > > >
> > > > Anyone has any better ideas? I thought about going from
> > > Object.getClass(),
> > > > but it does
> > > > not seem to be the way.
> > > >
> > > >
> > > ==============================================================
> > > =============
> > > > To unsubscribe: mailto [EMAIL PROTECTED] with body:
> > > "signoff JSP-
> > > INTEREST".
> > > > For digest: mailto [EMAIL PROTECTED] with body: "set
> > > JSP-INTEREST DIGEST".
> > > > Some relevant FAQs on JSP/Servlets can be found at:
> > > >
> > > > http://java.sun.com/products/jsp/faq.html
> > > > http://www.esperanto.org.nz/jsp/jspfaq.html
> > > > http://www.jguru.com/jguru/faq/faqpage.jsp?name=JSP
> > > > http://www.jguru.com/jguru/faq/faqpage.jsp?name=Servlets
> > >
> > > Namratha Reddy
> > > Staff Consultant
> > > High Gear Inc.
> > >
> > > Phone: (262)814-1660 ext.522
> > > E-Mail: [EMAIL PROTECTED]
> > > www.high-gear.com
> > >
> > > ==============================================================
> > > =============
> > > To unsubscribe: mailto [EMAIL PROTECTED] with body:
> > > "signoff JSP-INTEREST".
> > > For digest: mailto [EMAIL PROTECTED] with body: "set
> > > JSP-INTEREST DIGEST".
> > > Some relevant FAQs on JSP/Servlets can be found at:
> > >
> > > http://java.sun.com/products/jsp/faq.html
> > > http://www.esperanto.org.nz/jsp/jspfaq.html
> > > http://www.jguru.com/jguru/faq/faqpage.jsp?name=JSP
> > > http://www.jguru.com/jguru/faq/faqpage.jsp?name=Servlets
> > >
> >
> > ==================================================================
> > =========
> > To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff
> > JSP-INTEREST".
> > For digest: mailto [EMAIL PROTECTED] with body: "set
> > JSP-INTEREST DIGEST".
> > Some relevant FAQs on JSP/Servlets can be found at:
> >
> > http://java.sun.com/products/jsp/faq.html
> > http://www.esperanto.org.nz/jsp/jspfaq.html
> > http://www.jguru.com/jguru/faq/faqpage.jsp?name=JSP
> > http://www.jguru.com/jguru/faq/faqpage.jsp?name=Servlets
> > >
>
> ==============================================================
> =============
> To unsubscribe: mailto [EMAIL PROTECTED] with body:
> "signoff JSP-INTEREST".
> For digest: mailto [EMAIL PROTECTED] with body: "set
> JSP-INTEREST DIGEST".
> Some relevant FAQs on JSP/Servlets can be found at:
>
> http://java.sun.com/products/jsp/faq.html
> http://www.esperanto.org.nz/jsp/jspfaq.html
> http://www.jguru.com/jguru/faq/faqpage.jsp?name=JSP
> http://www.jguru.com/jguru/faq/faqpage.jsp?name=Servlets
>
===========================================================================
To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff
JSP-INTEREST".
For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST
DIGEST".
Some relevant FAQs on JSP/Servlets can be found at:
http://java.sun.com/products/jsp/faq.html
http://www.esperanto.org.nz/jsp/jspfaq.html
http://www.jguru.com/jguru/faq/faqpage.jsp?name=JSP
http://www.jguru.com/jguru/faq/faqpage.jsp?name=Servlets
===========================================================================
To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST DIGEST".
Some relevant FAQs on JSP/Servlets can be found at:
http://java.sun.com/products/jsp/faq.html
http://www.esperanto.org.nz/jsp/jspfaq.html
http://www.jguru.com/jguru/faq/faqpage.jsp?name=JSP
http://www.jguru.com/jguru/faq/faqpage.jsp?name=Servlets