আমি সম্প্রতি দেখেছি ইন্টারফেসে স্থির পদ্ধতি থাকার বিকল্প রয়েছে। ইন্টারফেসের স্থির ক্ষেত্রগুলির মতোই, একটি আকর্ষণীয় আচরণ রয়েছে: এগুলি উত্তরাধিকার সূত্রে প্রাপ্ত হয় না।
আমি নিশ্চিত নই যে এটি বাস্তবিক ইন্টারফেসগুলিতে কার্যকর হবে any তবে এটি প্রোগ্রামারকে এমন ইন্টারফেস তৈরি করতে সক্ষম করে যা স্ট্যাটিক স্টাফের জন্য যেমন কেবল খাম, যেমন ইউটিলিটি ক্লাস।
একটি সাধারণ উদাহরণ গ্লোবাল ধ্রুবকগুলির জন্য কেবল একটি খাম। একটি শ্রেণীর তুলনায়, আপনি public static final
অনুমান করা হয় যেমন এটি অনুপস্থিত বয়লারপ্লেটটি সহজেই লক্ষ্য করতে পারেন (এটি কম ভার্বোস তৈরি করে)।
public interface Constants {
String LOG_MESSAGE_FAILURE = "I took an arrow to the knee.";
int DEFAULT_TIMEOUT_MS = 30;
}
আপনি কনফিগার কীগুলির এই সিউডো-এনামের মতো আরও জটিল কিছু তৈরি করতে পারেন।
public interface ConfigKeys {
static createValues(ConfigKey<?>... values) {
return Collections.unmodifiableSet(new HashSet(Arrays.asList(values)));
}
static ConfigKey<T> key(Class<T> clazz) {
return new ConfigKey<>(clazz);
}
class ConfigKey<T> {
private final Class<T> type;
private ConfigKey(Class<T> type) {
this.type = type;
}
private Class<T> getType() {
return type;
}
}
}
import static ConfigKeys.*;
public interface MyAppConfigKeys {
ConfigKey<Boolean> TEST_MODE = key(Boolean.class);
ConfigKey<String> COMPANY_NAME = key(String.class);
Set<ConfigKey<?>> VALUES = createValues(TEST_MODE, COMPANY_VALUE);
static values() {
return VALUES;
}
}
আপনি কিছু উপযোগ "শ্রেণি" এভাবে তৈরি করতে পারেন। যাইহোক, ইউটিলিটিগুলিতে, ব্যক্তিগত বা সুরক্ষিত সহায়ক পদ্ধতিগুলি ব্যবহার করা প্রায়শই দরকারী, যা ক্লাসে যথেষ্ট সম্ভব নয়।
আমি এটিকে একটি দুর্দান্ত নতুন বৈশিষ্ট্য হিসাবে বিবেচনা করেছি এবং বিশেষত স্থির সদস্যদের উত্তরাধিকার সূত্রে প্রাপ্ত নয় এমন একটি আকর্ষণীয় ধারণা যা কেবলমাত্র ইন্টারফেসের সাথে পরিচিত হয়েছিল।
আমি যদি আপনি এটি একটি ভাল অনুশীলন বিবেচনা করতে পারেন ভাবছি। যদিও কোড শৈলী এবং সর্বোত্তম অনুশীলনগুলি অচল নয় এবং মতামত রাখার সুযোগ রয়েছে তবে আমি মনে করি সাধারণত মতামতকে সমর্থন করার বৈধ কারণ রয়েছে।
আমি এই দুটিগুলির মতো নিদর্শনগুলি ব্যবহার করার কারণগুলিতে (না) বেশি আগ্রহী।
নোট করুন যে আমি সেই ইন্টারফেসগুলি প্রয়োগ করার ইচ্ছা করি না। তারা কেবল তাদের স্থিতিশীল সামগ্রীর জন্য একটি খাম। আমি কেবল ধ্রুবকগুলি বা পদ্ধতিগুলি ব্যবহার করতে এবং সম্ভবত স্থিতিশীল আমদানি ব্যবহার করার ইচ্ছা করি।
default
পদ্ধতি সম্পর্কে কথা বলছেন । আমি static
পদ্ধতি এবং ক্ষেত্র সম্পর্কে কথা বলছি । এগুলি উত্তরাধিকার সূত্রে প্রাপ্ত নয়, সুতরাং তারা একাধিক উত্তরাধিকার ভেঙে না।