Skip to Main Content

Java HotSpot Virtual Machine

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

Overriding Interface methods via JNI

893718Oct 11 2011 — edited Oct 11 2011
Hello,

How we can override Interface methods via JNI?

For example:

At HelloWorldSwing example:

http://download.oracle.com/javase/tutorial/uiswing/examples/start/HelloWorldSwingProject/src/start/HelloWorldSwing.java

I've written anonymous Interface as:
import javax.swing.*;        

public class HelloWorldSwing1 {
    /**
     * Create the GUI and show it.  For thread safety,
     * this method should be invoked from the
     * event-dispatching thread.
     */
    private static void createAndShowGUI() {
        //Create and set up the window.
        JFrame frame = new JFrame("HelloWorldSwing");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //Add the ubiquitous "Hello World" label.
        JLabel label = new JLabel("Hello World");
        frame.getContentPane().add(label);

        //Display the window.
        frame.pack();
        frame.setVisible(true);
    }
    
    static Runnable runnableObject = new Runnable() {
    	public void run() {
    		createAndShowGUI();    		
    	}
    };
    
   public static void main(String[] args) {
    	//Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        SwingUtilities.invokeLater(runnableObject);
    }
}
via JNI functions(http://download.oracle.com/javase/1.4.2/docs/guide/jni/spec/functions.html) we cannot override Runnable Interface's run method? Can we?

Only:

RunnableClass's value isn't null with given example at below. FindClass finds the Runnable Interface.
jclass RunnableClass;
RunnableClass = (*env)->FindClass(env,"java/lang/Runnable");
  if( RunnableClass == NULL ) {
    printf("can't find class Runnable\n");
    exit (-1);
  }
But How can we override Runnable class's run method?

Thanks in Advance

Comments

EJP Oct 11 2011
The only way you can override a method in Java is by defining a class that does so, either statically or as an anonymous inner class. You can't do either of those things in JNI. Ergo you cannot do what you are asking about.
1 - 1
Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Nov 8 2011
Added on Oct 11 2011
1 comment
3,769 views