• 忘羡的Day9!


    技术总结:

    获取Class对象的方法?

    getClass

    .class

    Class.forName();

    ClassLoader

    代码如下:
    `package com.javaboy.demo1;

    import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

    /**

    • 获取Class对象的四种方式:
      /
      public class Demo2 {
      public static void main(String[] args) {
      /
      getClass
      .class
      Class.forName();
      ClassLoader*/
      //1. getClass()
      String s = new String("hello");
      Class clazz1= s.getClass();//引用类型尽可能用.getClass();

      //2. .class
      Class clazz2= String.class;
      
      //3.Class.forName();
       Class clazz3=null;
       try {
           clazz3= Class.forName("java.lang.String");
       } catch (ClassNotFoundException e) {
           e.printStackTrace();
       }
      
       //4.  ClassLoader
       Class clazz4=null;
       try {
           clazz4= ClassLoader.getSystemClassLoader().loadClass("java.lang.String");
       } catch (ClassNotFoundException e) {
           e.printStackTrace();
       }
       System.out.println(clazz1==clazz2);
       System.out.println(clazz1==clazz3);
       System.out.println(clazz1==clazz4);
       System.out.println(clazz3==clazz4);`
      

    在JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中:

    Class类:代表一个类。

    Field 类:代表类的成员变量(成员变量也称为类的属性)。

    Method类:代表类的方法。

    Modifier类:代表修饰符。

    Constructor 类:代表类的构造方法。

    Array类:提供了动态创建数组,以及访问数组的元素的静态方法。

    代码如下:

    `package com.xjy.demo2;

    import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    import java.util.Arrays;

    public class Demo2 {
    public static void main(String[] args) {
    Student student=new Student();
    Class clzStu=student.getClass();
    Field[] fields= clzStu.getDeclaredFields();
    System.out.println(Arrays.toString(fields));
    //have a try
    try {
    //通过类对象获得类对象所对应的类里面的属性,通过给定的参数
    Field field = clzStu.getDeclaredField("name");
    System.out.println("field:"+field);
    //通过类对象获得类对象所对应的类里面的属性,获得所有的属性
    Field[] fields2 = clzStu.getDeclaredFields();
    System.out.println("fields2:"+fields2);
    System.out.println(Arrays.toString(fields2));

            //Method
            try {
                Method method=clzStu.getMethod("test",String.class);
                System.out.println("method:"+method);
    
                Method[] methods2 = clzStu.getMethods();
                System.out.println("methods2:"+methods2);
                System.out.println(Arrays.toString(methods2));
                System.out.println("************");
                //发音 有道词典发音 百度发音
                Method[] methods3 =clzStu.getDeclaredMethods();
                System.out.println("methods:"+Arrays.toString(methods3));
    
                //4.modifiler
               int num= clzStu.getModifiers();
                System.out.println("num:"+num);
    
                //5.Constructor
                Constructor constructor=clzStu.getConstructor(String.class);
                System.out.println("constructor:"+constructor);
    
                //6.Constructers
                Constructor[] constructors=clzStu.getConstructors();
                System.out.println("constructors:"+constructors);
                System.out.println("#############");
                System.out.println(Arrays.toString(constructors));
    
                //7.
                Constructor[] constructors1 =clzStu.getDeclaredConstructors();
                System.out.println("#############");
                System.out.println(Arrays.toString(constructors1));
             } catch (NoSuchMethodException e) {
                e.printStackTrace();
            }
    
    
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }
    }
    

    }`

    心得:

      1。我们必须明确一个大方向,向着这个大方向发展,努力!
      2。学习是为了用的,是为了让你对社会产生价值!
      3。在学习过程中一定要动手做,而不是只听不写 没用 很多东西和体会必须自己动手才能真正属于自己
      4.在学习过程中可能会遇到形形色色的问题不容易解决 应多去网上查资料 因为书上的东西有限。
    

    可以去网上查查 加以整理,促进学习的深入和水平的提高!!!

  • 相关阅读:
    C++关键字 inline
    MySQL之Join
    leetcode:Isomorphic Strings
    vs中常用的快捷键
    size_t 和 size_type的区别
    使用max函数计算EXCEL个税公式
    什么是数组?
    作业题:输入4个整数,找出其中最大的数。用一个函数来实现. 分别使用结构化方法和函数嵌套的方法。
    c++作业:输入两个整数,用函数求两数之和。函数外部声明有什么作用?
    Java中如果把构造方法也私有化,如何创建对象?Java的单例设计模式——饿汉式和懒汉式区别
  • 原文地址:https://www.cnblogs.com/xjyboke/p/13554225.html
Copyright © 2020-2023  润新知