আমি জাভাতে andোকার জন্য কয়েকটি ওপেন সোর্স জাভা প্রজেক্টের দিকে তাকিয়ে দেখছি এবং তাদের অনেকেরই কিছু ধরণের 'ধ্রুবক' ইন্টারফেস রয়েছে।
উদাহরণস্বরূপ, প্রসেসিং.আরসি এর PConstants.java নামে একটি ইন্টারফেস রয়েছে এবং অন্যান্য বেশিরভাগ মূল ক্লাস এই ইন্টারফেসটি প্রয়োগ করে। ইন্টারফেস স্থির সদস্যদের সাথে ধাঁধা হয়। এই পদ্ধতির কোনও কারণ আছে, বা এটি খারাপ অভ্যাস হিসাবে বিবেচিত? এনামগুলি যেখানে এটি বোধগম্য হয় বা স্ট্যাটিক বর্গ কেন ব্যবহার করবেন না ?
আমি কিছু ধরণের সিডো 'গ্লোবাল ভেরিয়েবল' এর অনুমতি দেওয়ার জন্য ইন্টারফেস ব্যবহার করা অদ্ভুত বলে মনে করি।
public interface PConstants {
// LOTS OF static fields...
static public final int SHINE = 31;
// emissive (by default kept black)
static public final int ER = 32;
static public final int EG = 33;
static public final int EB = 34;
// has this vertex been lit yet
static public final int BEEN_LIT = 35;
static public final int VERTEX_FIELD_COUNT = 36;
// renderers known to processing.core
static final String P2D = "processing.core.PGraphics2D";
static final String P3D = "processing.core.PGraphics3D";
static final String JAVA2D = "processing.core.PGraphicsJava2D";
static final String OPENGL = "processing.opengl.PGraphicsOpenGL";
static final String PDF = "processing.pdf.PGraphicsPDF";
static final String DXF = "processing.dxf.RawDXF";
// platform IDs for PApplet.platform
static final int OTHER = 0;
static final int WINDOWS = 1;
static final int MACOSX = 2;
static final int LINUX = 3;
static final String[] platformNames = {
"other", "windows", "macosx", "linux"
};
// and on and on
}
platformNamesহতে পারে public, staticএবং final, কিন্তু এটা স্পষ্টভাবে একটি ধ্রুবক নয়। একমাত্র ধ্রুবক অ্যারে হ'ল শূন্য দৈর্ঘ্য with
static finalঅযথা অপ্রয়োজনীয় হয় না। ক্লাস বা ইন্টারফেস ক্ষেত্রটি কেবল finalকীওয়ার্ড সহ সেই ক্ষেত্রের পৃথক দৃষ্টান্ত তৈরি করবে আপনি শ্রেণি বা ইন্টারফেসের অবজেক্ট তৈরি করার সময়। ব্যবহার static finalপ্রতিটি বস্তুকে সেই ক্ষেত্রের জন্য একটি মেমরি অবস্থান ভাগ করে তুলবে। অন্য কথায়, যদি কোনও ক্লাস মাইক্লাসের ক্ষেত্র final String str = "Hello";থাকে তবে মাইক্লাসের এন উদাহরণগুলির জন্য, মেমরির ক্ষেত্রে ক্ষেত্রের এন উদাহরণগুলি থাকতে পারে। staticকীওয়ার্ডটি যুক্ত করার ফলে কেবলমাত্র 1 টি ফলাফল ঘটবে।
static finalপ্রয়োজনীয় নয়, এটি একটি ইন্টারফেসের জন্য অপ্রয়োজনীয়।