diff options
Diffstat (limited to 'Examples/java/class/runme.java')
| -rw-r--r-- | Examples/java/class/runme.java | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/Examples/java/class/runme.java b/Examples/java/class/runme.java new file mode 100644 index 0000000..e1ea0d7 --- /dev/null +++ b/Examples/java/class/runme.java @@ -0,0 +1,70 @@ +// This example illustrates how C++ classes can be used from Java using SWIG. +// The Java class gets mapped onto the C++ class and behaves as if it is a Java class. + +public class runme { + static { + try { + System.loadLibrary("example"); + } catch (UnsatisfiedLinkError e) { + System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e); + System.exit(1); + } + } + + public static void main(String argv[]) + { + // ----- Object creation ----- + + System.out.println( "Creating some objects:" ); + Circle c = new Circle(10); + System.out.println( " Created circle " + c ); + Square s = new Square(10); + System.out.println( " Created square " + s ); + + // ----- Access a static member ----- + + System.out.println( "\nA total of " + Shape.getNshapes() + " shapes were created" ); + + // ----- Member data access ----- + + // Notice how we can do this using functions specific to + // the 'Circle' class. + c.setX(20); + c.setY(30); + + // Now use the same functions in the base class + Shape shape = s; + shape.setX(-10); + shape.setY(5); + + System.out.println( "\nHere is their current position:" ); + System.out.println( " Circle = (" + c.getX() + " " + c.getY() + ")" ); + System.out.println( " Square = (" + s.getX() + " " + s.getY() + ")" ); + + // ----- Call some methods ----- + + System.out.println( "\nHere are some properties of the shapes:" ); + Shape[] shapes = {c,s}; + for (int i=0; i<shapes.length; i++) + { + System.out.println( " " + shapes[i].toString() ); + System.out.println( " area = " + shapes[i].area() ); + System.out.println( " perimeter = " + shapes[i].perimeter() ); + } + + // Notice how the area() and perimeter() functions really + // invoke the appropriate virtual method on each object. + + // ----- Delete everything ----- + + System.out.println( "\nGuess I'll clean up now" ); + + // Note: this invokes the virtual destructor + // You could leave this to the garbage collector + c.delete(); + s.delete(); + + System.out.println( Shape.getNshapes() + " shapes remain" ); + System.out.println( "Goodbye" ); + } +} |
