নিম্নলিখিত কোড:
void someMethod(Object value)
{
String suffix = getSuffix();
if (suffix != null)
value += suffix;
[...]
}
JDK 8 এ ত্রুটি ছাড়াই সংকলন করে (-Source 1.6 ব্যবহার করে), তবে ত্রুটি বার্তায় জেডিকে 6 এ ব্যর্থ হয়:
Operator '+' cannot be applied to java.lang.Object and java.lang.String
আমি কীভাবে ত্রুটিটি সম্পর্কে বুঝতে পারি না কেন, এইটি জেডিকে 8 এর সাথে সংকলন করে? এই কোথাও নথিভুক্ত করা হয়?
আমার ধারণা মানটি স্ট্রিংয়ের মতো হবে না। মানটি যদি একটি পূর্ণসংখ্যা হয় তবে আমি এর সাথে একটি স্ট্রিং যুক্ত করতে বুদ্ধিমান করব না। মাইয়ে আপনি স্ট্রিংয়ের জন্য মূল্য কাস্ট করার চেষ্টা করতে পারেন
—
fedoraHacker
@ ফেডোরাহ্যাকার
—
গ্রোড্রিগেজ
value = value + suffix
মূল্যের ধরণ নির্বিশেষে অভিব্যক্তিটি সম্পূর্ণ আইনি। সুতরাং এটি আমার value += suffix
কাছে আইনী হওয়া উচিত বলে মনে হয় ।
বাহ, আমার কোনও ধারণা ছিল না আমি ভেবেছিলাম যে বিভিন্ন বস্তুর পুরো বিষয়টি হ'ল ডেটা কী করতে পারে এবং কী করতে পারে না তার নিয়ম নির্ধারণ করা to বিভিন্ন ডেটাটাইপ এবং অবজেক্ট থাকার পুরো বিষয়টি হ'ল ধরণগুলি এক কাজ করে তা নিশ্চিত করার জন্য পৃথক করে দেওয়া দায়িত্ব, তবে এটি ভালভাবে করে। আমি কেবল বিস্মিত হয়েছি যে আপনি এর মতো ডেটাটাইপগুলি মিশ্রিত করতে পারেন। ভাল আপনি প্রতিদিন কিছু শিখেন :) এবং মান = মান + প্রত্যয় হ'ল মান + = প্রত্যয় হিসাবে একই, সুতরাং আমি
—
বাক্যটিকে মোটেও
হ্যাঁ তবে স্ট্রিং টাইপটি কিছুটা বিশেষ। এখানে + অপারেটরটি হ'ল "স্ট্রিং কনট্যাকটেশন অপারেটর"; যদি অপারেন্ডগুলির মধ্যে কেবল একটি স্ট্রিং হয় তবে বাকীটি মূল্যায়নের আগে অন্যটি স্ট্রেনে রূপান্তরিত হয়। জেএলএস এর এই বিভাগটি দেখুন ।
—
গ্রোড্রিগেজ
আমি দেখছি, স্ট্রিং এটিকে এমন রূপান্তরিত করতে পারে না। প্রশ্নের উত্তর দেওয়ার পরেও সময় দেওয়ার জন্য ধন্যবাদ!
—
fedoraHacker