public class MainActivity extends AppCompatActivity {     
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button play = (Button)findViewById(R.id.playButton);
        MediaPlayer mediaN = MediaPlayer.create(this, R.raw.master6);
        play.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                mediaN.start();
            }
        });
    }
}
In the above code, I have intialised a new MediaPlayer object within the onCreate method. When i want to use the MediaPlayer object mediaN to call start() method, it asks me to declare the object as final. However, I don't get any errors if I initialise MediaPlayer object as instance variable of the class MainActivity. Why am I asked to make the MediaPlayer object as final when it is declared as a local variable to onCreate method?
 
     
    