इंटिजर को इंट में कैसे बदलें?


82

मैं एक वेब एप्लिकेशन पर काम कर रहा हूं जिसमें क्लाइंट और सर्वर साइड के बीच डेटा ट्रांसफर किया जाएगा।

मुझे पहले से ही पता है कि जावास्क्रिप्ट इंट! = जावा इंट। क्योंकि, Java int शून्य नहीं हो सकता, ठीक है। अब मेरे सामने यही समस्या है।

मैंने अपने Java int वैरिएबल को Integer में बदल दिया।

public void aouEmployee(Employee employee) throws SQLException, ClassNotFoundException
{
   Integer tempID = employee.getId();
   String tname = employee.getName();
   Integer tage = employee.getAge();
   String tdept = employee.getDept();
   PreparedStatement pstmt;
   Class.forName("com.mysql.jdbc.Driver");
   String url ="jdbc:mysql://localhost:3306/general";
   java.sql.Connection con = DriverManager.getConnection(url,"root", "1234");
   System.out.println("URL: " + url);
   System.out.println("Connection: " + con);
   pstmt = (PreparedStatement) con.prepareStatement("REPLACE INTO PERSON SET ID=?, NAME=?, AGE=?, DEPT=?");
   pstmt.setInt(1, tempID);
   pstmt.setString(2, tname);
   pstmt.setInt(3, tage);
   pstmt.setString(4, tdept);
   pstmt.executeUpdate();
 }

मेरी समस्या यहाँ है:

pstmt.setInt(1, tempID);

pstmt.setInt(3, tage);

मैं यहाँ इंटेगर चर का उपयोग नहीं कर सकता। मैंने कोशिश की, intgerObject.intValue(); लेकिन यह चीजों को और अधिक जटिल बनाता है। क्या हमारे पास कोई अन्य रूपांतरण विधियाँ या रूपांतरण तकनीकें हैं?

कोई भी फिक्स बेहतर होगा।


2
मुझे समझ नहीं आ रहा है। आप कुछ सरल की तुलना में देख रहे हैं pstmt.setInt(1, tempID.intValue())? कोड के लायक 11 वर्ण जोड़ने से आसान क्या है?
EboMike

1
जावा 5 या बाद में स्विच करने का प्रयास करें: रूपांतरण स्वचालित रूप से किया जाएगा।
निकिता रायबाक

1
अरे, यह काम करता है। धन्यवाद। लेकिन अब समस्या यहाँ आ गई "Integer id = rs.getInt (1);"।

1
@MaRaVan क्यों एक समस्या है? यह भी ठीक काम करना चाहिए। क्या आपने भी इसे आजमाया है?
कोलिनड

हां, मैंने .TTnt () में .intValue () का उपयोग किया है, और यह काम करता है। लेकिन, इंटेगर आईडी = rs.getInt (1); अब लाल बत्ती दिखा रहा है।

जवाबों:


77

जैसा कि पहले ही कहीं और लिखा जा चुका है:

  • जावा 1.5 के लिए और बाद में आपको (लगभग) कुछ भी करने की आवश्यकता नहीं है, यह कंपाइलर द्वारा किया गया है।
  • जावा 1.4 और उससे पहले के लिए, Integer.intValue()इंटीजर से इंट में बदलने के लिए उपयोग करें।

लेकिन जैसा कि आपने लिखा है, Integerअशक्त हो सकता है, इसलिए यह जांचने में समझदारी है कि बदलने की कोशिश करने से पहले int(या जोखिम प्राप्त करने के लिए NullPointerException)।

pstmt.setInt(1, (tempID != null ? tempID : 0));  // Java 1.5 or later

या

pstmt.setInt(1, (tempID != null ? tempID.intValue() : 0));  // any version, no autoboxing  

* शून्य के डिफ़ॉल्ट का उपयोग करना, कुछ भी नहीं कर सकता, एक चेतावनी दिखा सकता है या ...

मैं ज्यादातर ऑटोबॉक्सिंग (दूसरी नमूना लाइन) का उपयोग नहीं करना पसंद करता हूं, इसलिए यह स्पष्ट है कि मैं क्या करना चाहता हूं।


1
Java 1.4.2 में Integer.valueOf(int)संदर्भ नहीं है : docs.oracle.com/javase/1.4.2/docs/api/java/lang/…
हार्दिक मिश्रा

13

जब से तुम कहते हैं कि तुम जावा 5 का उपयोग कर रहे हैं, तो आप उपयोग कर सकते हैं setIntएक साथ Integerautounboxing के कारण: pstmt.setInt(1, tempID)ठीक काम करना चाहिए। जावा के पुराने संस्करणों में, आपको .intValue()खुद को कॉल करना होगा ।

इसके विपरीत काम करता है ... एक intको असाइन करने Integerसे स्वचालित रूप intसे ऑटोबॉक्स्ड का उपयोग करने का कारण होगा Integer.valueOf(int)


1
इसे कैसे बदलें "Integer id = rs.getInt (1);" पूर्णांक के लिए।

1
मैंने आदमी किया। यह सेटआईंट () के लिए काम करता है और मैं इसकी सराहना करता हूं। यहां, आईडी इंटर्जर है और rs.getInt () एक अंतर चर लौटाता है। यह काम नहीं कर रहा है।

1
सॉरी कोडर्स, आप सभी सही थे। मेरा JRE 1.4। मुझे आपका समय बर्बाद करने के लिए वास्तव में खेद है।

9

जब तक आप अभी भी जावा 1.4 के साथ हैं तब तक जावा इंटीजर को इंटेंस और बैक में स्वचालित रूप से कनवर्ट करता है।


7
यदि एक होता है तो क्या होता Integerहै null?
स्पार्कअंडाइन

2
@sparkandshine - थोड़ा देर से, लेकिन अच्छी तरह से - nullकारण होना चाहिएNullPointerException
user85421


4

शायद आपके पास अपने आईडीई सेट के लिए जावा 1.4 मोड के लिए कंपाइलर सेटिंग्स हैं, भले ही आप जावा 5 जेडडीके का उपयोग कर रहे हों? अन्यथा मैं अन्य लोगों से सहमत हूं जिन्होंने पहले से ही ऑटोबॉक्सिंग / अनबॉक्सिंग का उल्लेख किया था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.