क्या जावा में C ++ का एनालॉग है struct
:
struct Member {
string FirstName;
string LastName;
int BirthYear;
};
मुझे अपने स्वयं के डेटा प्रकार का उपयोग करने की आवश्यकता है।
जवाबों:
जावा में निश्चित रूप से कोई संरचना नहीं है :) लेकिन आप यहाँ जो वर्णन करते हैं वह जावा की तरह का वर्ग दिखता है।
inline class
निकट भविष्य में किसी बिंदु पर उम्मीद है कि मेरा मानना है कि यह एक संरचना की तरह है।
एक संरचना में जावा के बराबर होगा
class Member
{
public String FirstName;
public String LastName;
public int BirthYear;
};
और सही परिस्थितियों में इसके साथ कुछ भी गलत नहीं है। C ++ के समान ही वास्तव में जब आप संकुचित छंदों के साथ एक वर्ग का उपयोग करते हैं तब आप छंद का उपयोग करते हैं।
वास्तव में सी ++ में एक संरचना एक वर्ग है (जैसे आप वहां तरीकों को परिभाषित कर सकते हैं, इसे बढ़ाया जा सकता है, यह बिल्कुल एक कक्षा की तरह काम करता है), एकमात्र अंतर यह है कि डिफ़ॉल्ट एक्सेस मोडफ़ायर सार्वजनिक रूप से सेट होते हैं (उन कक्षाओं के लिए जो वे निजी सेट हैं डिफ़ॉल्ट रूप से)।
यह वास्तव में C ++ का एकमात्र अंतर है, बहुत से लोग यह नहीं जानते हैं। ; )
जावा में C ++ की संरचना का एनालॉग नहीं है, लेकिन आप सभी सार्वजनिक सदस्यों के साथ कक्षाओं का उपयोग कर सकते हैं।
public
क्यों है , क्यों न उन्हें पैकेज में आंतरिक रूप से बहुत कम से कम रखा जाए? उस तरह की कक्षाएं आम तौर पर एक एपीआई में उपयोग के लिए फिट नहीं होती हैं (यदि संभव हो तो केवल null
संदर्भ के लिए)। हमेशा न्यूनतम दृश्यता का उपयोग करें!
प्रोजेक्ट JUnion के साथ आप @Struct एनोटेशन के साथ एक क्लास एनोटेट करके जावा में स्ट्रक्चर्स का उपयोग कर सकते हैं
@Struct
class Member {
string FirstName;
string LastName;
int BirthYear;
}
परियोजना की वेबसाइट पर अधिक जानकारी: https://tehleo.github.io/junion/
हां, जावा में अभी तक संरचना / मूल्य प्रकार नहीं है। लेकिन, जावा के आगामी संस्करण में, हम प्राप्त करने जा रहे हैं inline class
जो सी # में संरचना के समान है और हमें आवंटन मुक्त कोड लिखने में मदद करेगा।
inline class point {
int x;
int y;
}
"वास्तव में" शुद्ध संरचनाएं जावा में समर्थित नहीं हैं। जैसे, C # उन struct
परिभाषाओं का समर्थन करता है जो मूल्यों का प्रतिनिधित्व करते हैं और कभी भी आवंटित किए जा सकते हैं।
जावा में, C ++ स्ट्रक्चर्स का एक अनुमान प्राप्त करने का अनूठा तरीका
struct Token
{
TokenType type;
Stringp stringValue;
double mathValue;
}
// Instantiation
{
Token t = new Token;
}
(स्टेटिक बफर या सूची) का उपयोग किए बिना कुछ ऐसा कर रहा है
var type = /* TokenType */ ;
var stringValue = /* String */ ;
var mathValue = /* double */ ;
तो, बस चर का आवंटन करें या सांख्यिकीय रूप से उन्हें एक वर्ग में परिभाषित करें।
firstName
,lastName
औरbirthYear
(याyearOfBirth
निश्चित रूप से)।