1. Annotation

使用范围: package, class, method, field   常用: @Override, @Deprecated, @SuppressWarnings   自定义注解:     @Target(ElementType.FIELD)     public @interface Person{       String name() default "";       int id() default 0;     }   元注解:     @Target(ElementType.FIELD): 使用域为属性     @Retention(RetentionPolicy.RUNTIME): 运行时可用     @Documented     @Inherited   注解操作     java.lang.Class对象的注解相关方法(以下注解来自类, 属性,方法也有相似操作)     getAnnotation, getAnnotations, isAnnotationPresent, getAnnotationsByType     getDeclaredAnnotationsByType, getDeclaredAnnotation, getDeclaredAnnotations

2. ORM

Object Relationship Mapping   对象与关系型数据结构之间的映射

3. 反射机制

基于java.lang.Class对象     获取类名: getName, getSimpleName     获取属性信息: getField, getFields, getDeclaredField, getDeclaredFields     获取方法: getMethod(有参方法要传入参数类型), getMethods, getDeclaredMethod, getDeclaredMethods     获取构造器: getConstructor, getConstructors, getDeclaredConstructor, getDeclaredConstructors   setAccessible(true), 设置取消访问检查   java具有泛有擦除机制: java类在加载后, Class对象并没有泛型, 泛型只是给编译器使用的   ParameterizedType: 带泛型的参数类型, 如Collection   GenericArrayType: 泛型数组类型   WildcardType: 通配符类型   Method中对类型的操作     getGenericParameterTypes 获取所有参数类型     getReturnType 获取返回值类型   ParameterizedType中对泛型的操作     getActualTypeArguments 获取该类型的所有泛型   熟练掌握Class, Method, Field, Constructor类和Type接口   反射会降低程序效率, 普通方法效率是反射的30倍

4. 动态编译

Runtime调用javac        Runtime r = Runtime.getRuntime();            Process process = r.exec("javac -cp /src/main/java/com/galaxy/util/ StringUtil.java");   JavaCompiler     JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();     int result = compiler.run(null, null, null, "c:/myjava/HelloWorld.java");   脚本引擎执行JavaScript代码     ScriptEngineManager sem = new ScriptEngineManager();            ScriptEngine engine = sem.getEngineByName("javascript");   使用ScriptEngine对象的put将需要执行的js代码放入引擎, 再eval调用put进引擎的代码, get可以拿到js变量

5. 字节码操作

java动态性: 字节码操作, 反射   字节码操作使用: 动态生成新的类, 动态改变类结构   优势: 比反射开销小,性能高, Javassist性能比反射高,比ASM低   常见字节码操作类库:     BCEL(Byte Code Engineering Library) JVM汇编语言进行类的细节操作     ASM轻量级java字节码操作框架, 直接涉及JVM底层操作指令     CGLIB(Code Generation Library)基于ASM实现更强大的,高性能的,高质量的Code生成类库     Javassist分析编辑创建java字节码,开源,使用简单与cglib相似   Javassist     AOP(Aspect Oriented Programming, 面向切面编程)     Reflection   主要类:     CtClass       ClassPool pool = ClassPool.getDefault();       CtClass cc = pool.makeClass("com.bjsxt.bean.Emp");     CtMethod       CtMethod m1 = CtMethod.make("public void setEmpno(int empno){this.empno=empno;}", cc);       cc.addMethod(m1);     CtField       CtField f1 = CtField.make("private int empno;", cc);       cc.addField(f1);     CtConstructor       CtConstructor constructor = new CtConstructor(new CtClass[]{CtClass.intType,pool.get("java.lang.String")}, cc);       constructor.setBody("{this.empno=empno; this.ename=ename;}");       cc.addConstructor(constructor);

java中override快捷键_Java高级应用简笔相关推荐

  1. java中override快捷键_【基础回溯1】面试又被 Java 基础难住了?推荐你看看这篇文章。...

    本文已经收录自 https://github.com/Snailclimb/JavaGuide  (59k+ Star):[Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识. ...

  2. java中的多态_Java中的多态

    多态与HoFs 朋友们好久不见啊,最近笔者同时在写脚本型语言--JavaScript,和工业级的面向对象语言--Java. 在写代码的同时呢,也会思考这些语言的不同.今天就拿 Java 中的多态,来谈 ...

  3. JAVA中 @Override 的作用

    如果想重写父类的方法,比如toString()方法的话,在方法前面加上@Override  系统可以帮你检查方法的正确性, @Override public String toString(){... ...

  4. java中怪物移动_java中两大怪物,附带面试题!

    最近老是有小伙伴问类和Object相关的问题,感觉还是很多人对此不是很明白,那我们今天就干掉这两个怪物. 类介绍 Java 程序是由若干个类组成的,类也是面向对象编程思想的具体实现. 以下为类的定义: ...

  5. java中抽象类 接口_java中的抽象类与接口

    1.抽象类的定义 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 2.简单实例 ...

  6. java中属于常量_java中的常量和属性

    Java最佳实践建议将属性作为常量读取.那么,您认为达到目标的最佳方法是什么?我的方法是:一个Configuration类只读取一次属性文件(单例模式),并使用此类在需要时读取属性作为常量.并存储一个 ...

  7. java中策略设计模式_Java中的设计模式(五):策略模式

    策略设计模式是行为设计模式之一.当我们为特定任务使用多个算法时,使用策略模式,客户端决定在运行时使用的实际实现. 策略模式的最佳示例之一是Collections.sort()采用Comparator参 ...

  8. java中的抽象方法_Java中的抽象类和抽象方法

    ###Java中的抽象方法和抽象类: abstract:关键字,可以用于修饰方法和类 抽象方法:不同类的方法是相似的,但是具体实现的内容又不太一样,没有具体的方法体. 抽象类:有抽象方法的类必须是抽象 ...

  9. java中fork函数_java中的forkjoin框架的使用

    fork join框架是java 7中引入框架,这个框架的引入主要是为了提升并行计算的能力. fork join主要有两个步骤,第一就是fork,将一个大任务分成很多个小任务,第二就是join,将第一 ...

最新文章

  1. python 事务操作_Python实现完整的事务操作示例
  2. python之路径拼接urljoin
  3. 开发笔记:游戏逻辑模块组织及数据同步
  4. 370万开发者,14万家企业!飞桨中国行落地深圳 激发AI软硬件创新发展新动能...
  5. 警惕 | 警惕,mybatis的size()方法竟然有坑!
  6. Github新功能 个人展示项目--首页展示个人介绍 图片and so on(2020.08.05)
  7. 始发 终点站 附近几站 全部查询 原来代码基本弃用 数组见上篇文章
  8. visio 生成mysql脚本_Visio2010建立ER图并直接导出为SQL语句
  9. 奶瓶(beini)破解无线密码流程:安装、抓包、从虚拟机(VMware)拷贝握手包(拷贝到硬盘、U盘)、跑包...
  10. 传动系统结构简图_液压传动系统结构示意图画图技巧(攻略)
  11. 百度AI开放平台情感分类
  12. wps下一页 很好玩!wps中怎么插入欧姆符号
  13. Unity3D坦克大战游戏开发——学习笔记(下)
  14. 49 把字符串转换成整数
  15. FILEminimizer Office,FILEminimizer Suite和FILEminimizer Server常见问题FAQ合集(一)
  16. 【区块链讲师会前访谈】结合应用场景 区块链共识算法如何选择?
  17. android 版本更新原理,蒲公英 - 文档中心 - SDK 自动更新机制
  18. 10款Windows实用软件推荐,满满的干货,总有一款是你必备的
  19. c语言课程设计湖南工程学院,湖南工程学院15级C语言课程设计报告.doc
  20. Python学习笔记3-Python开发工具

热门文章

  1. openwrt - iperf3 内网测速
  2. OSChina 周二乱弹 —— 因为这样被离职了
  3. 怎么搭建自己的内测分发平台?
  4. 20180102下结构体
  5. CentOS7创建普通用户
  6. 红米k30至尊纪念版和华为mate30pro哪个值得买
  7. adb 不可以网络连接问题
  8. 遮天、斗破苍穹、凡人修仙传、雪中悍刀行争第四届橙瓜网络文学奖
  9. PPPOE和IPOE
  10. vue前端框架有哪些