এখানে শিরোনাম দ্বারা প্রলুব্ধদের জন্য: হ্যাঁ, আপনি আপনার এনামগুলিতে আপনার নিজস্ব পদ্ধতিগুলি সংজ্ঞায়িত করতে পারেন। আপনি যদি ভাবছেন যে কীভাবে এই জাতীয় স্থিতিশীল পদ্ধতিটি চালাবেন, আপনি অন্য কোনও স্থিতিশীল পদ্ধতির মতোই এটি করেন - আপনি যে পদ্ধতিটি সংজ্ঞায়িত করে বা উত্তরাধিকারসূত্রে প্রকারভেদ করে তা উদাহরণস্বরূপ প্রার্থনা করুন। এনামের ক্ষেত্রে এ জাতীয় দৃষ্টান্তগুলি সহজভাবে হয় ENUM_CONSTANT
।
সুতরাং আপনার যা দরকার তা হল EnumType.ENUM_CONSTANT.methodName(arguments)
।
এখন প্রশ্ন থেকে সমস্যা ফিরে যেতে দিন। সমাধানগুলির একটি হতে পারে
public enum Direction {
NORTH, SOUTH, EAST, WEST;
private Direction opposite;
static {
NORTH.opposite = SOUTH;
SOUTH.opposite = NORTH;
EAST.opposite = WEST;
WEST.opposite = EAST;
}
public Direction getOppositeDirection() {
return opposite;
}
}
এখন Direction.NORTH.getOppositeDirection()
ফিরে আসবে Direction.SOUTH
।
এখানে @ জেডওয়ার্ডস মন্তব্যটি তুলে ধরার আরও কিছুটা "হ্যাকি" উপায় রয়েছে তবে এটি আরও ক্ষেত্র যুক্ত করা বা তাদের ক্রম পরিবর্তন করা আমাদের কোডটিকে ভঙ্গ করবে বলে প্রথম পদ্ধতির মতো নমনীয় মনে হচ্ছে না।
public enum Direction {
NORTH, EAST, SOUTH, WEST;
// cached values to avoid recreating such array each time method is called
private static final Direction[] VALUES = values();
public Direction getOppositeDirection() {
return VALUES[(ordinal() + 2) % 4];
}
}