पैकेज java.time
से value based classes हैं। यदि मेरे पास ऐसी वस्तु का उपयोग करने वाली इकाई है जो फ़ील्ड के रूप में है, तो मैं निम्नलिखित "समस्या" में चलाता हूं: मूल्य आधारित कक्षाओं को क्रमबद्ध नहीं किया जाना चाहिए। हालांकि, जेपीए इकाई को इंटरफेस सीरियलज़ेबल को कार्यान्वित करना है। उस विरोधाभास का समाधान क्या है? क्या किसी को जेपीए इकाई के क्षेत्र के रूप में स्थानीयडेटाइम का उपयोग नहीं करना चाहिए? इसके बजाय तिथि का उपयोग करें? यह असंतुष्ट होगा।जावा.टाइम और जेपीए
यह समस्या एक सोनार नियम squid:S3437
है और इसलिए वहाँ, क्योंकि हम LocalDateTime करने की तारीख से बदल परियोजना में कीड़े का एक बहुत हैं ...
गैर अनुरूप मूल्य आधारित वर्ग उपयोग के कारण समाधान:
@Entity
public class MyEntity implements Serializable{
@Column
private String id; // This is fine
@Column
private LocalDateTime updated; // This is not ok, as LocalDateTime is a value based class
@Column
private Date created; // This however is fine..
}
क्यों नरक में आपको लगता है कि मूल्य आधारित कक्षाओं को क्रमबद्ध नहीं किया जाना चाहिए? बेशक वे serialized किया जा सकता है। यही कारण है कि यह Serializable लागू करता है। –
अच्छी तरह से हमारे पास यह कहानी अच्छी तरह से है, क्योंकि समय के लिए हम केवल '@SuppressWarnings ("squid: S3437") हैं, अभी के लिए, dev-list पर एक टिप्पणी है (मैं इसे खोदने की कोशिश करूंगा) यह कहता है कि यह * मूल्य * आधारित * वर्ग * को मूल्य आधारित * प्रकार * – Eugene
@JBNizet में स्थानांतरित करने के लिए इन मान आधारित * कक्षाओं को प्रतिबंधित कर सकता है यह वास्तव में स्थानीयडेटाइम के बारे में अजीब बात है। यह एक मूल्य आधारित वर्ग भी है। यदि आप ऑर्केकल दस्तावेज में देखते हैं तो आपको मूल्य आधारित कक्षाओं के बारे में निम्न कथन मिलेगा: https: // docs।oracle.com/javase/8/docs/api/java/lang/doc-files/ValueBased.html एक प्रोग्राम अप्रत्याशित परिणाम उत्पन्न कर सकता है यदि यह दो संदर्भों को मान-आधारित वर्ग के बराबर मानों में अंतर करने का प्रयास करता है [... ] क्रमबद्धता, या किसी अन्य पहचान-संवेदनशील तंत्र। इस तरह के उपयोग [...] अप्रत्याशित प्रभाव हो सकता है और इससे बचा जाना चाहिए। – itsme