Win a copy of Functional Reactive Programming this week in the Other Languages forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

JNI - static variables vs. instance variables

 
Frank Hale
Ranch Hand
Posts: 230
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Okay I am having a hell of a time trying to figure out why my native method can change static variables and not instance variables in a java class.
Basically I have a native method which returns a new class which holds a long value. Its how purpose in life is to hold one long variable.
The class is like this:

Now I have a method inside another class which returns a Window object with its handle;

I wanna do something like below, but it only works if I use a static variable in my Window class.

When CreateWindow is called it returns a new Window object with its handle. The problem is if I make the handle static then the handle gets passed from C to java. If I leave off the static because I would rather not have it static then the handle doesn't get passed to java from the C function.
Any help would be greatly appreciated.
Should I be so worried about using a static versus an instance variable? Does it make that much of a difference if I leave it as static?
Thanks,
Frank
 
Amit Zzz Kulkarni
Ranch Hand
Posts: 30
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Frank,
It is definitely worse to access it as a static, why not make an object and access it as an instance ? I recall that I had faced the same problem and I made an object.
 
Frank Hale
Ranch Hand
Posts: 230
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Yes I finally figured out how to access instance variables from C. I just stuff my C pointer into a Java int and then pass it back to C from Java in subsequent calls and cast it to its type. It works just like I expect it to.
I'm well on my way to a Xlib interface for Java. WooHoo!!!
If you've ever seen the Aewm window manager then I am converting it to Java using my interface, it should be pretty slick. And best of all the memory foot print has been relatively small.
Frank
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic