আমার একটি ক্লাস আছে এবং সেই ক্লাসে আমার এটি রয়েছে:
//some code
private int[] data = new int[3];
//some code
তারপরে আমার কনস্ট্রাক্টারে:
public Date(){
data[0] = 0;
data[1] = 0;
data[2] = 0;
}
আমি যদি এটি করি তবে সবকিছু ঠিক আছে। ডিফল্ট ডেটা মানগুলি শুরু করা হয় তবে আমি পরিবর্তে এটি করলে:
public Date(){
int[] data = {0,0,0};
}
এটা বলে:
Local variable hides a field
কেন?
কনস্ট্রাক্টরের ভিতরে কোন অ্যারে শুরু করার সর্বোত্তম উপায় কী?
dataপরে"//some code"পুরো বর্গের সুযোগ রয়েছে।dataকনস্ট্রাক্টরের ভেরিয়েবলের কনস্ট্রাক্টরের ভিতরে স্কোপ থাকে। এবং একবার কনস্ট্রাক্টর হয়ে গেলে ভেরিয়েবলটি নষ্ট হয়ে যাবে। এবংdataকনস্ট্রাক্টরের ভিতরে ভেরিয়েবলও ক্লাসে একই নামে ভেরিয়েবলটি আড়াল করে। এটি ত্রুটিটিকে ন্যায়সঙ্গত করেLocal variable hides a field