zoukankan      html  css  js  c++  java
  • Annoation

    内置注解:

    (1)@Override:此注解用于修饰方法,表示一个方法明打算重写超类中的方法。

    (2)@Deprecated:此注解可以修饰方法、属性、类,表示不鼓励程序员使用这样的元素,通常因为它很危险或存在更好的选择。

    (3)@SuppressWarnings:用来抑制编译时的警告信息(需要添加一个参数才能正确使用)。

    元注解:负责注解其它注解

    @target:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)。

    @Retention:表示需要在什么级别保存该注解信息。

    反射(reflection):Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。

    public class Hello
    {
        public static void main(String[] args) {
            try {
                Class clazz = Class.forName("com.user");
                //获取类的名字
                System.out.println(clazz.getName());//获取保命+类名(类的全路径)
                System.out.println(clazz.getSimpleName());//获取类名
                //获取属性信息
                //Field[] fields = clazz.getFields();//只能获取public的field
                Field[] fields = clazz.getDeclaredFields();//获取所有的field
                Field field = clazz.getDeclaredField("name");
                //获取方法信息
                //如果方法有参数,则必须传递参数类型对应的class对象
                Method methods = clazz.getDeclaredMethod("name", String.class);
    
                //获取构造器信息
                //无参构造器
                Constructor constructor = clazz.getDeclaredConstructor();
                //有参数构造器
                Constructor constructor1 = clazz.getDeclaredConstructor(String.class);
                //获取注解
                Annotation annotation = clazz.getDeclaredAnnotation(Constructor.class);
    
            } catch (Exception  e) {
                e.printStackTrace();
            }
        }
    }
    public class Hello
    {
        public static void main(String[] args) {
            try {
                Class clazz = Class.forName("com.user");
                    //通过反射,构造对象
                   Object object = clazz.newInstance();
                   //通过有参构造方法构造对象
                   Constructor c = clazz.getConstructor(String.class);
                    Object object1 = c.newInstance("name");
                    //通过反射API调用普通方法
                   Method method = clazz.getDeclaredMethod("setUsername", String.class);
                   method.invoke("name");
                   //通过反射API操作属性
                   Field f = clazz.getDeclaredField("username");
                   //私有属性必须设置该值才能被访问
                    f.setAccessible(true);
                   f.set(object, "name");
                
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
  • 相关阅读:
    jqueryeasyui1.2.3学习
    继续干IT的十个理由
    设计模式建造者模式(Builder Pattern)
    一段不错的视频
    第十一章:配置和安全IntelliMorph
    第十一章:配置和安全许可和配置
    物理库存和财务库存浅析
    第十一章:配置和安全概述
    IE6 双倍边距的解决方法
    asp实现关键词不区分大小写搜索并高亮显示
  • 原文地址:https://www.cnblogs.com/ming-long/p/11618030.html
Copyright © 2011-2022 走看看