summaryrefslogtreecommitdiff
path: root/Examples/java/callback/runme.java
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/java/callback/runme.java')
-rw-r--r--Examples/java/callback/runme.java56
1 files changed, 56 insertions, 0 deletions
diff --git a/Examples/java/callback/runme.java b/Examples/java/callback/runme.java
new file mode 100644
index 0000000..4090f0a
--- /dev/null
+++ b/Examples/java/callback/runme.java
@@ -0,0 +1,56 @@
+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[] args)
+ {
+ System.out.println("Adding and calling a normal C++ callback");
+ System.out.println("----------------------------------------");
+
+ Caller caller = new Caller();
+ Callback callback = new Callback();
+
+ caller.setCallback(callback);
+ caller.call();
+ caller.delCallback();
+
+ callback = new JavaCallback();
+
+ System.out.println();
+ System.out.println("Adding and calling a Java callback");
+ System.out.println("------------------------------------");
+
+ caller.setCallback(callback);
+ caller.call();
+ caller.delCallback();
+
+ // Test that a double delete does not occur as the object has already been deleted from the C++ layer.
+ // Note that the garbage collector can also call the delete() method via the finalizer (callback.finalize())
+ // at any point after here.
+ callback.delete();
+
+ System.out.println();
+ System.out.println("java exit");
+ }
+}
+
+class JavaCallback extends Callback
+{
+ public JavaCallback()
+ {
+ super();
+ }
+
+ public void run()
+ {
+ System.out.println("JavaCallback.run()");
+ }
+}
+