文章目录
- 1. Field
- 2. 类所在的包
- 3. 举例
1. Field
public Field[] getFields()
:返回此 Class 对象所表示的类或接口的公有的 Field 。
public Field[] getDeclaredFields()
:返回此 Class 对象所表示的类或接口的全部的 Field 。
Field 方法中:
①public int getModifiers()
: 以整数形式返回此 Field 的修饰符
②public Class<?> getType()
:得到 Field 的属性类型
③public String getName()
:返回 Field 的名称。
2. 类所在的包
Package getPackage()
3. 举例
举例:
父类Person
package day14;
public class Person {
public String name;
int age;
}
接口Move
package day14;
public interface Move {
void moveType();
}
接口Study
package day14;
public interface Study {
void studyInfo();
}
子类Student:公有属性有school
和继承父类Person中的name
;私有属性有privateField
package day14;
public class Student extends Person implements Move,Study{
public Student() {
System.out.println("调用的是public Student()");
}
public Student(String school) {
this.school = school;
System.out.println("调用的是public Student(String school)");
}
private Student(String school, int age) {
this.school = school;
this.age = age;
System.out.println("调用的是private Student(String school, int age)");
}
public String school;
private String privateField;
public void showInfo() {
System.out.println("学校是:" + this.school);
}
@Override
public void studyInfo() {
System.out.println("学习的是中学知识");
}
@Override
public void moveType() {
System.out.println("骑自行车去上学");
}
private void test(String name) {
}
public String getSchool() {
return this.school;
}
}
Test.java
(1)获取类的公有属性:
package day14;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Test1 {
public static void main(String[] args) {
try {
Class clazz = Class.forName("day14.Student");//通过 包名.类名 的字符串,调用Class.forName方法获取指定类的Class实例
Field[] fs = clazz.getFields();//获取类的公有属性,包含父类的公有属性
for(Field f : fs) {
System.out.println("修饰符:" + f.getModifiers());
System.out.println("属性的类型:" + f.getType());
System.out.println("属性的名称:" + f.getName());
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
运行结果:
(2)获取类的所有属性
package day14;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Test1 {
public static void main(String[] args) {
try {
Class clazz = Class.forName("day14.Student");//通过 包名.类名 的字符串,调用Class.forName方法获取指定类的Class实例
// Field[] fs = clazz.getFields();//获取类的公有属性,包含父类的公有属性
Field[] fs = clazz.getDeclaredFields();//获取本类的(不包括父类)所有属性,包括私有
for(Field f : fs) {
System.out.println("修饰符:" + f.getModifiers());
System.out.println("属性的类型:" + f.getType());
System.out.println("属性的名称:" + f.getName());
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
运行结果:
(3)返回包所在的名称
package day14;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Test1 {
public static void main(String[] args) {
try {
Class clazz = Class.forName("day14.Student");//通过 包名.类名 的字符串,调用Class.forName方法获取指定类的Class实例
Package p = clazz.getPackage();//获取类所在的包
System.out.println(p.getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
运行结果: