public Field[] getFields() throws SecurityException
ส่งคืนอาร์เรย์ที่มีวัตถุเขตข้อมูลที่สะท้อนถึงเขตข้อมูลสาธารณะที่สามารถเข้าถึงได้ทั้งหมดของชั้นเรียนหรืออินเตอร์เฟซที่แสดงโดยวัตถุชั้นนี้ องค์ประกอบในอาร์เรย์ที่ส่งคืนจะไม่เรียงลำดับและไม่ได้เรียงตามลำดับใด ๆ วิธีการนี้จะส่งกลับอาร์เรย์ที่มีความยาว 0 ถ้าคลาสหรืออินเทอร์เฟซไม่มีเขตข้อมูลสาธารณะที่สามารถเข้าถึงได้หรือถ้ามันหมายถึงคลาสอาร์เรย์ชนิดดั้งเดิมหรือเป็นโมฆะ
ถ้าวัตถุคลาสนี้แสดงคลาสวิธีนี้จะส่งคืนเขตข้อมูลสาธารณะของคลาสนี้และซูเปอร์คลาสทั้งหมดของมัน ถ้าวัตถุคลาสนี้แสดงถึงอินเทอร์เฟซวิธีการนี้จะส่งคืนเขตข้อมูลของอินเทอร์เฟซนี้และของ superinterfaces ทั้งหมด
ฟิลด์ความยาวโดยนัยสำหรับคลาสอาเรย์ไม่ได้สะท้อนให้เห็นโดยวิธีนี้ รหัสผู้ใช้ควรใช้วิธีการของคลาส Array เพื่อจัดการอาร์เรย์
public Field[] getDeclaredFields() throws SecurityException
ส่งคืนอาร์เรย์ของวัตถุเขตข้อมูลที่สะท้อนถึงเขตข้อมูลทั้งหมดที่ประกาศโดยชั้นเรียนหรืออินเตอร์เฟซที่แสดงโดยวัตถุชั้นนี้ ซึ่งรวมถึงการเข้าถึงสาธารณะได้รับการป้องกันเริ่มต้น (แพคเกจ) และเขตข้อมูลส่วนตัวแต่ไม่รวมเขตข้อมูลที่สืบทอด องค์ประกอบในอาร์เรย์ที่ส่งคืนจะไม่เรียงลำดับและไม่ได้เรียงตามลำดับใด ๆ วิธีนี้ส่งกลับอาร์เรย์ที่มีความยาว 0 ถ้าคลาสหรืออินเทอร์เฟซประกาศเขตข้อมูลไม่หรือถ้าวัตถุคลาสนี้แสดงถึงชนิดดั้งเดิมดั้งเดิมคลาสของอาร์เรย์หรือเป็นโมฆะ
และถ้าฉันต้องการฟิลด์ทั้งหมดจากคลาสแม่ทั้งหมด ต้องการรหัสบางอย่างเช่นจากhttps://stackoverflow.com/a/35103361/755804 :
public static List<Field> getAllModelFields(Class aClass) {
List<Field> fields = new ArrayList<>();
do {
Collections.addAll(fields, aClass.getDeclaredFields());
aClass = aClass.getSuperclass();
} while (aClass != null);
return fields;
}
getField
สามารถรับฟิลด์ที่สืบทอดมาจากซูเปอร์คลาส แต่getDeclaredField
ไม่สามารถทำได้getDeclaredField
จำกัด ตัวเองเป็นคลาสที่คุณเรียกใช้ฟังก์ชัน