toString() isn't supposed to be a static method.  When you call
x.toString(), you're accessing x's non-static version of toString(), which
is inherited from Object. 

-- Walt


ivansh ([EMAIL PROTECTED]) wrote:
> For one java class (Hello) i use another (HelloPrinter) to build the
> string representation of the first one. When i've tried to use this
> from within jython,  HelloPrinter.toString(hello) call gives results
> like Object.toString() of hello has being called. The example below
> shows this behaviour.
> Could somebody explain this?
> 
> // Hello.java
> package jythontest;
> public class Hello {
>       private String name;
>       public Hello(String name)
>       {
>               this.name = name;
>       }
>       public String sayHello()
>       {
>               return "Hello, "+name;
>       }
> }
> 
> // HelloPrinter.java
> package jythontest;
> public class HelloPrinter {
>       public static String toString(Hello h)
>       {
>               return h.sayHello();
>       }
> 
>       public static String toMyString(Hello h)
>       {
>               return h.sayHello();
>       }
> }
> 
> #  calljava.py
> from jythontest import *
> h = Hello("theName")
> print h
> print HelloPrinter.toString(h)
> print HelloPrinter.toMyString(h)
> 
> OUTPUT:
> [EMAIL PROTECTED]   // GOOD
> [EMAIL PROTECTED]   // WRONG
> Hello, theName                 // GOOD
> 
> 
> Jython 2.1 on java (JIT: null)
> 
> java version "1.5.0_03"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_03-b07)
> Java HotSpot(TM) Server VM (build 1.5.0_03-b07, mixed mode)
> 
> -- 
> http://mail.python.org/mailman/listinfo/python-list
> 
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to