Forum Stats

  • 3,827,899 Users
  • 2,260,838 Discussions
  • 7,897,402 Comments

Discussions

Overriding Interface methods via JNI

893718
893718 Member Posts: 3
edited Oct 11, 2011 5:35AM in Java Native Interface (JNI)
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

Answers

  • EJP
    EJP Member Posts: 32,920 Gold Crown
    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.
    EJP
This discussion has been closed.