反射和动态语言

简介: 动态语言动态编程语言是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。Java 引入反射后可以算「动态语言」因为反射允许正在运行的 Java 程序观测,甚至是修改程序的动态行为。

动态语言

动态编程语言是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。

Java 引入反射后可以算「动态语言」

因为反射允许正在运行的 Java 程序观测,甚至是修改程序的动态行为。

反射的使用场景

大多数情况使用的还是反射的 introspection,即观测,比如

  • rpc 调用,根据协议 invoke 某个类的某个方法
  • 序列化和反序列化,如 fastjson
  • ORM
  • 用注解搞事情
  • ide 里的提示。如你继承了某个抽象类后,能检测到你有没有实现某个抽象方法

动态vs 静态类型语言

动态类型语言是在编译器没确定,运行时才确定变量类型的语言。当你给变量赋值的时候,该变量的类型才确定。

  • 动态类型的优点

    • 少些很多代码。比如定义很多功能相同的方法,只是入参类型不一样
  • 缺点

    • 运行时报错。使用 api 时不知道支持的变量类型,可能运行时才报错
目录
相关文章
|
iOS开发
SwiftUI极简教程13:NavigationView导航栏使用
SwiftUI极简教程13:NavigationView导航栏使用
2431 2
SwiftUI极简教程13:NavigationView导航栏使用
|
机器学习/深度学习 人工智能 自然语言处理
计算机视觉借助深度学习实现了革命性进步,从图像分类到复杂场景理解,深度学习模型如CNN、RNN重塑了领域边界。
【7月更文挑战第2天】计算机视觉借助深度学习实现了革命性进步,从图像分类到复杂场景理解,深度学习模型如CNN、RNN重塑了领域边界。AlexNet开启新时代,后续模型不断优化,推动对象检测、语义分割、图像生成等领域发展。尽管面临数据隐私、模型解释性等挑战,深度学习已广泛应用于安防、医疗、零售和农业,预示着更智能、高效的未来,同时也强调了技术创新、伦理考量的重要性。
237 1
|
开发框架 安全 Java
★推荐一款适用于SpringBoot项目的轻量级HTTP客户端框架 上
★推荐一款适用于SpringBoot项目的轻量级HTTP客户端框架 上
583 0
★推荐一款适用于SpringBoot项目的轻量级HTTP客户端框架    上
|
机器学习/深度学习 人工智能 JSON
使用 TensorFlow 和 Express.js 实现AI图像识别
人工智能是一个相当广泛的领域,以其惊人的能力和复杂的性质吸引着人们的兴趣。自 1940 年代首次提出使用电子设备重建大脑的可能性以来,这项技术已经取得了长足的进步。尽管人工智能和机器学习在其生命周期的大部分时间里都是相当独特的领域,但事情开始发生变化。
1055 0
使用 TensorFlow 和 Express.js 实现AI图像识别
|
SQL 分布式计算 Hadoop
Exception in thread “main“ java.lang.RuntimeException: java.lang.RuntimeException: Unable to instant
Exception in thread “main“ java.lang.RuntimeException: java.lang.RuntimeException: Unable to instant
1630 0
Exception in thread “main“ java.lang.RuntimeException: java.lang.RuntimeException: Unable to instant
|
SQL 存储 安全
SQL Server——触发器
触发器,是一种特殊类型的存储过程,它在指定的表中的数据发生变化时自动生效。经常通过触发器来强制实现不同表中的逻辑相关数据的引用完整性或一致性。触发器主要是通过事件进行触发而被执行的,而存储过程可以通过过程名字而直接调用。当对某一个表进行诸如UPDATE、INSERT、DELETE这些操作时,SQL Server就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合这些SQL语句所定义的规则
|
IDE Java API
小知识 - Gradle7.0之后JitPack发布组件需要注意的几个问题
最近在使用 JitPack 发布组件时候,遇到了这几个问题,着实找了好一会才解决,分享一下。🙃
796 0
|
SQL 开发框架 前端开发
Asp.net core项目实战 新闻网站+后台 源码、设计原理、视频教程
Asp.net core项目实战 新闻网站+后台 源码、设计原理、视频教程
488 0
Asp.net core项目实战 新闻网站+后台 源码、设计原理、视频教程
|
Android开发
【Android 插件化】VirtualApp 接入 ( 在 VirtualApp 工程下创建 Module | 添加依赖 | 启动 VirtualApp 插件引擎 )(二)
【Android 插件化】VirtualApp 接入 ( 在 VirtualApp 工程下创建 Module | 添加依赖 | 启动 VirtualApp 插件引擎 )(二)
251 0
【Android 插件化】VirtualApp 接入 ( 在 VirtualApp 工程下创建 Module | 添加依赖 | 启动 VirtualApp 插件引擎 )(二)