• 为何代码没错,却出不来结果,你可能...


    1、想看看我正确又简洁干净的代码:

    image

    image

    • 嗯,我也觉得没有毛病,但是一运行:

    java.lang.NoSuchMethodException: com.shan.hello.Hello.()
    at java.base/java.lang.Class.getConstructor0(Class.java:3517)
    at java.base/java.lang.Class.getConstructor(Class.java:2238)
    at com.shan.hello.HelloTest.testIoCMock(HelloTest.java:52)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at ……

              不应该结果出不来呀,奔溃,想到可能是编译器自身有毛病,我重启了,发现还是没出结果;我又尝试了刷新,还是没出结果;我还试过关闭后再次打开项目,再次让人悲伤,只能拿出杀手锏---调试,也不行,直接报错,而且报错信息提示时构造器问题。。。

    ----找到啦---导包出错啦,代码没错,但是导包错啦


    ✿ 2、总结:为何代码没错,却出不来结果,你可能...

    ------少年呀,你忽视了包呀,导错包了呀少年


    ✿ 3、关于反射:

    (1)获取构造器是要与访问权限无关,记得加关键词Declared

    • 获取所有构造器:
      □ getConstructors() 【所有,public修饰的】
      □ getDeclaredConstructors()【所有,和访问权限无关】

    • 获取指定的一个构造器:
      □ 公共无参构造器 getConstructor()
      □ 公共有参构造器 getConstructor(Class...parameterTypes) 参数parameterTypes表示构造器参数的Class类型
      □ 任何类型的有参构造器 get**Declared**Constructor(Class...parameterTypes) 【和访问权限无关

    (2)对于私有的构造器,要反射获取对象,记得:

    设置当前构造器为可以访问
    Constructor对象.setAccessible(true)

  • 相关阅读:
    java面试题2
    java面试题
    查询数据库表字段名和字段类型等信息
    安装eclipse
    redis启动
    eclipse离线安装sonarlint插件
    大白菜安装win10系统
    制作window.ios镜像
    大白菜装机系统
    传递中文字符串时,转换编码格式
  • 原文地址:https://www.cnblogs.com/shan333/p/15926698.html
Copyright © 2020-2023  润新知