Advertisement
dermetfan

variables in anonymous classes

Nov 16th, 2013
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.48 KB | None | 0 0
  1.     private float classScope;
  2.  
  3.     @Override
  4.     public void pause() {
  5.         final Vector2 methodScope = new Vector2(); // has to be final
  6.  
  7.         new InputAdapter() {
  8.  
  9.             private float innerClassScope;
  10.  
  11.             @Override
  12.             public boolean touchDown(int screenX, int screenY, int pointer, int button) {
  13.                 classScope = button;
  14.                 methodScope.set(pointer, button);
  15.                 innerClassScope = pointer;
  16.                 return true;
  17.             }
  18.  
  19.         };
  20.  
  21.         // to access variables from inside the class, you need to subclass
  22.         MyInputAdapter myAdapter = new MyInputAdapter() {
  23.            
  24.             private float innerClassScope2;
  25.            
  26.             @Override
  27.             public boolean keyDown(int keycode) {
  28.                 return MathUtils.randomBoolean();
  29.             }
  30.            
  31.             @Override
  32.             public boolean touchDown(int screenX, int screenY, int pointer, int button) {
  33.                 classScope = button;
  34.                 methodScope.set(pointer, button);
  35.                 innerClassScope = pointer;
  36.                 return true;
  37.             }
  38.            
  39.         };
  40.        
  41.         float x = myAdapter.myAwesomeVar; // you can access it directly (even though it's private) because MyAdapter is an inner class of this screen
  42.         float y = myAdapter.innerClassScope2; // COMPILE ERROR: innerClassScope2 is still just available in the anonymous implementation of MyInputAdapter
  43.     }
  44.  
  45.     private class MyInputAdapter extends InputAdapter {
  46.  
  47.         private float myAwesomeVar;
  48.  
  49.         @Override
  50.         public boolean touchUp(int screenX, int screenY, int pointer, int button) {
  51.             myAwesomeVar += screenX;
  52.             return super.touchUp(screenX, screenY, pointer, button);
  53.         }
  54.  
  55.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement