চলকটির জন্য অনেকগুলি ব্যবহার রয়েছে final
। এখানে মাত্র কয়েক
ফাইনাল কনস্ট্যান্টস
public static class CircleToolsBetter {
public final static double PI = 3.141;
public double getCircleArea(final double radius) {
return (Math.pow(radius, 2) * PI);
}
}
এটি তখন আপনার কোডগুলির অন্যান্য অংশগুলির জন্য ব্যবহার করা যেতে পারে, বা অন্য শ্রেণি দ্বারা অ্যাক্সেস করা যায়, যদি আপনি কখনও মান পরিবর্তন করেন তবে আপনাকে সেগুলির এক এক করে পরিবর্তন করতে হবে না।
ফাইনাল ভেরিয়েবল
public static String someMethod(final String environmentKey) {
final String key = "env." + environmentKey;
System.out.println("Key is: " + key);
return (System.getProperty(key));
}
}
এই শ্রেণিতে আপনি একটি স্কোপড চূড়ান্ত ভেরিয়েবল তৈরি করেন যা প্যারামিটার এনভায়রনমেন্ট কীতে একটি উপসর্গ যুক্ত করে। এই ক্ষেত্রে, চূড়ান্ত পরিবর্তনশীল কেবলমাত্র কার্যকর করার সুযোগের মধ্যে চূড়ান্ত হয়, যা পদ্ধতির প্রতিটি প্রয়োগের ক্ষেত্রে পৃথক। প্রতিবার পদ্ধতি প্রবেশ করার পরে চূড়ান্তটি পুনর্গঠন করা হয়। এটি নির্মাণের সাথে সাথে, পদ্ধতিটি কার্যকর করার সুযোগের সময় এটি পরিবর্তন করা যাবে না। এটি আপনাকে পদ্ধতির সময়কালের জন্য কোনও পদ্ধতিতে একটি ভেরিয়েবল ঠিক করতে দেয়। নিচে দেখ:
public class FinalVariables {
public final static void main(final String[] args) {
System.out.println("Note how the key variable is changed.");
someMethod("JAVA_HOME");
someMethod("ANT_HOME");
}
}
ফাইনাল কনস্ট্যান্টস
public double equation2Better(final double inputValue) {
final double K = 1.414;
final double X = 45.0;
double result = (((Math.pow(inputValue, 3.0d) * K) + X) * M);
double powInputValue = 0;
if (result > 360) {
powInputValue = X * Math.sin(result);
} else {
inputValue = K * Math.sin(result); // <= Compiler error
}
এগুলি বিশেষত কার্যকর যখন আপনি কোডগুলির দীর্ঘ লাইনে থাকবেন এবং এটি সংকলক ত্রুটি তৈরি করবে যাতে কোনও ব্যক্তি দুর্ঘটনাক্রমে পরিবর্তনশীল পরিবর্তন করতে না পারলে আপনি যুক্তি / ব্যবসায় ত্রুটির দিকে না চলে।
চূড়ান্ত সংগ্রহ
বিভিন্ন ক্ষেত্রে যখন আমরা সংগ্রহের কথা বলছি তখন আপনার সেগুলি অবিরামযোগ্য হিসাবে সেট করা দরকার।
public final static Set VALID_COLORS;
static {
Set temp = new HashSet( );
temp.add(Color.red);
temp.add(Color.orange);
temp.add(Color.yellow);
temp.add(Color.green);
temp.add(Color.blue);
temp.add(Color.decode("#4B0082")); // indigo
temp.add(Color.decode("#8A2BE2")); // violet
VALID_COLORS = Collections.unmodifiableSet(temp);
}
অন্যথায়, আপনি যদি এটি অবিস্মরণীয় হিসাবে সেট না করেন:
Set colors = Rainbow.VALID_COLORS;
colors.add(Color.black); // <= logic error but allowed by compiler
চূড়ান্ত শ্রেণি এবং চূড়ান্ত পদ্ধতি যথাক্রমে প্রসারিত বা ওভাররাইট করা যায় না।
সম্পাদনা: নিবন্ধকরণ সংক্রান্ত শেষ শ্রেণীর সমস্যা সমাধানের জন্য:
ক্লাস ফাইনাল করার দুটি উপায় রয়েছে। প্রথমটি শ্রেণীর ঘোষণায় কীওয়ার্ড ফাইনালটি ব্যবহার করা হয়:
public final class SomeClass {
// . . . Class contents
}
ক্লাস ফাইনাল করার দ্বিতীয় উপায় হ'ল এর সমস্ত নির্মাণকারীকে ব্যক্তিগত হিসাবে ঘোষণা করা:
public class SomeClass {
public final static SOME_INSTANCE = new SomeClass(5);
private SomeClass(final int value) {
}
এই পরীক্ষার ক্লাসটি দেখানোর জন্য এটি চূড়ান্তভাবে চূড়ান্ত কিনা তা সন্ধান করে যদি এটিকে চূড়ান্ত চিহ্নিত করা আপনার সমস্যাটিকে বাঁচায়। প্রথম নজরে পাবলিক দেখায়।
public class Test{
private Test(Class beanClass, Class stopClass, int flags)
throws Exception{
// . . . snip . . .
}
}
দুর্ভাগ্যক্রমে, যেহেতু ক্লাসের একমাত্র নির্মাণকারী ব্যক্তিগত, তাই এই শ্রেণিটি বাড়ানো অসম্ভব। টেস্ট ক্লাসের ক্ষেত্রে ক্লাসটি ফাইনাল হওয়ার কোনও কারণ নেই। অন্তর্ভুক্ত চূড়ান্ত ক্লাস কীভাবে সমস্যা সৃষ্টি করতে পারে তার একটি দুর্দান্ত উদাহরণ টেস্ট ক্লাস।
সুতরাং আপনি নির্ধারিতভাবে এটির নির্মাণকারীকে ব্যক্তিগত করে ক্লাস ফাইনাল তৈরি করার সময় আপনার এটি চূড়ান্ত হিসাবে চিহ্নিত করা উচিত।