প্রতিবিম্ব ব্যবহার করে আমার একটি ক্ষেত্রের মান পেতে হবে। এটি এমনটি ঘটে যা আমি সর্বদা নিশ্চিত না যে ক্ষেত্রের ডেটাটাইপটি কী। তার জন্য, এবং কয়েকটি কোড সদৃশতা এড়াতে আমি নিম্নলিখিত পদ্ধতিটি তৈরি করেছি:
@SuppressWarnings("unchecked")
private static <T> T getValueByReflection(VarInfo var, Class<?> classUnderTest, Object runtimeInstance) throws Throwable {
Field f = classUnderTest.getDeclaredField(processFieldName(var));
f.setAccessible(true);
T value = (T) f.get(runtimeInstance);
return value;
}
এবং এই পদ্ধতিটি ব্যবহার করুন:
Long value1 = getValueByReflection(inv.var1(), classUnderTest, runtimeInstance);
অথবা
Double[] value2 = getValueByReflection(inv.var2(), classUnderTest, runtimeInstance);
সমস্যা হল আমি ঢালাই মনে করতে পারে না Integer
করার Long
:
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
এটি অর্জনের জন্য আরও ভাল উপায় আছে কি?
আমি জাভা 1.6 ব্যবহার করছি।
Number[]
যথাযথভাবে টাইপ করা অ্যারে তৈরি করতে এর উপরে একটি এবং লুপ ব্যবহার করতে পারি , তাই না?