文章目录
- 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();
}
}
}
运行结果:

![[H5动画制作系列]键盘及鼠标事件基础测试](https://img-blog.csdnimg.cn/9da9a3f7df59474d9764fe0bf0b0fd9c.png)


















