java基础-反射

Posted on 2021-02-27 23:19  七月妖妖无  阅读(53)  评论(0编辑  收藏  举报

1.关于获取某个类里的参数、方法问题。

(1)如果反参类型是Objec类型,拿到的类中没有获取类的参数、方法、构造函数这些方法。

Object是所有类的根类,是具体的一个类,使用的时候可能是需要类型强制转换的,但是用T ?等这些的话,在实际用之前类型就已经确定了,不需要强制转换。

(2)使用泛型作为返回类型

  关于class<T>和class<?>的区别:

    ? 表示不确定的java类型。 
    T 表示java类型。
    K V 分别代表java键值中的Key Value。
    E 代表Element。

2.获取某类里的属性:
(1)
@Data
@Entity
public class Reuser {
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Long id;
	
	@Column
	private String username;
	
	@Column
	private String name;
	
	@Column
	private Integer age;
	
	@Column
	private BigDecimal balance;
	
	
}

  (2)

public class Test {

    public static void main(String args[]) {
        Reuser user = new Reuser();
//        System.out.print("user对象的类是:"+user.getClass());
//        Object userClass = user.getClass();
        Class<? extends Reuser> userClass = user.getClass();
        Field[] fields = userClass.getFields();
        for(Field filed: fields) {
            System.out.println("user对象的属性有"+filed);    
        }
        
    }
}

运行Test,java,控制台什么也没输出,这是什么原因导致的呢?

  getFields()方法正获取到用public修饰的成员变量。

 

 

参考资料:1.https://www.cnblogs.com/skyislimit/p/5665853.html