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