java中override快捷键_Java高级应用简笔

7719edddfa2f0e9f5c9c49ed93c36a15.png

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

7719edddfa2f0e9f5c9c49ed93c36a15.png

2. ORM

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

7719edddfa2f0e9f5c9c49ed93c36a15.png

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倍

7719edddfa2f0e9f5c9c49ed93c36a15.png

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变量

7719edddfa2f0e9f5c9c49ed93c36a15.png

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);

64ceb7e190b0cecc2860e149dc17fae2.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java的鼠标事件可以通过实现MouseListener和MouseMotionListener接口来处理。MouseListener处理鼠标的单击、双击、按下、释放等事件,而MouseMotionListener处理鼠标的移动事件。 以下是一个简单的示例代码,演示如何在Java处理鼠标事件: ``` import java.awt.*; import java.awt.event.*; public class MouseExample extends Frame implements MouseListener, MouseMotionListener { private TextField tfMouseX; private TextField tfMouseY; public MouseExample() { addMouseListener(this); addMouseMotionListener(this); tfMouseX = new TextField(10); tfMouseY = new TextField(10); add(tfMouseX, BorderLayout.NORTH); add(tfMouseY, BorderLayout.SOUTH); setTitle("Mouse Example"); setSize(300, 200); setVisible(true); } public static void main(String[] args) { new MouseExample(); } @Override public void mouseClicked(MouseEvent e) { tfMouseX.setText("Mouse clicked at " + e.getX()); tfMouseY.setText("Mouse clicked at " + e.getY()); } @Override public void mousePressed(MouseEvent e) { tfMouseX.setText("Mouse pressed at " + e.getX()); tfMouseY.setText("Mouse pressed at " + e.getY()); } @Override public void mouseReleased(MouseEvent e) { tfMouseX.setText("Mouse released at " + e.getX()); tfMouseY.setText("Mouse released at " + e.getY()); } @Override public void mouseEntered(MouseEvent e) { tfMouseX.setText("Mouse entered at " + e.getX()); tfMouseY.setText("Mouse entered at " + e.getY()); } @Override public void mouseExited(MouseEvent e) { tfMouseX.setText("Mouse exited at " + e.getX()); tfMouseY.setText("Mouse exited at " + e.getY()); } @Override public void mouseDragged(MouseEvent e) { tfMouseX.setText("Mouse dragged at " + e.getX()); tfMouseY.setText("Mouse dragged at " + e.getY()); } @Override public void mouseMoved(MouseEvent e) { tfMouseX.setText("Mouse moved at " + e.getX()); tfMouseY.setText("Mouse moved at " + e.getY()); } } ``` 这个程序创建了一个文本框,在鼠标事件发生时更新文本框的内容。你可以在这个示例程序添加你自己的代码,以响应你所需的特定鼠标事件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值