展开全部

this 和 target 的差别在于我们挑选时是按声明类型还是实例类型,按62616964757a686964616fe78988e69d8331333337613832下面链接中提到的代码做个实验来用 static 方法证实有什么差异,我们知道 Java 中静态方法如果存在子类中也有同签名的方法时是不存在多态性的,在编译时的解释是按声明类来找方法的,因此聪明的实验看出 this 和 target 有什么不同,先做个实验来了解“声明的类型和实例的类型的不同之处",当 AOP 引入了 proxy 之后就有些差异了。

// 在静态方法不具有多态性,因此编译器是按声明的类型查找方法实现版本,而不是看实例本身的类型(看 new 语句的左边而不是看右边)。

class Parent {

public static void A () {

System.out.println("Parent.A");

}

}

class Child extends Parent {

public static void A() {

System.out.println("Child.A");

}

}

public class Main() {

Parent p = new Parent(); //声明类型是 Parent 实例类型也是 Parent.

Parent pc = new Child(); //声明类型是 Parent 但实例类型是 Child.

Child c = new Child();   //声明类型是 Child  实例类型也是 Child.

// 我们能看到 pc.A(); 给出的输出和 c.A() 是不同的。

p.A();

pc.A();

c.A();

}

@Aspect

public class IntroductionsAspect {

@DeclareParents(value="a.b.c.D", defaultImpl=XImpl.class)

public static X x;

@After("execution(* a.b.c.D.*(..)) && this(traceable)")

public void x(Traceable traceable) {

traceable.increment();

}

}

java joinpoint教程_java joinpoint的this和target的区别相关推荐

  1. Java培训教程:”==“和 equals 方法究竟有什么区别?

    在学习java技术过程中,我们会接触到一些变量值的相关知识,本期小编为大家介绍的教程就是关于"=="和 equals 方法究竟有什么区别?来看看下面的详细介绍. Java培训教程: ...

  2. java nio教程_Java NIO教程

    java nio教程 1.简介 Java NIO是Java 1.4引入的一个库. 自从Java NIO推出以来,它提供了另一种方法来处理I / O和网络事务. 它被认为是Java网络和Java IO库 ...

  3. java设计模式教程_Java设计模式教程

    java设计模式教程 课程大纲 架构和计算机科学中的设计模式是记录特定专业领域中设计问题的解决方案的正式方法. 这个想法是由建筑师Christopher Alexander在建筑领域引入的,并已被修改 ...

  4. java反射教程_Java反射教程

    java反射教程 在本教程中,我主要编写一些示例来介绍Java反射可以做什么. 希望它可以给您这个概念的概述. 请留下您的评论以寻求建议. 什么是反射? 简而言之,反射是程序在运行时检查和修改对象的结 ...

  5. java io教程_Java IO教程

    java io教程 Java provides several classes in java.io package to work with text, stream data, and file ...

  6. java web 教程_Java Web服务教程

    java web 教程 Welcome to the Java Web Services Tutorial. Here we will learn about web services, useful ...

  7. java joinpoint教程_Java的教程

    Java编程语言 Java编程语言中,左侧的导航栏(Java编程语言),可以快速定位文章的内容.这篇文章主要汇总以下: Java编程语言学习:Java的概述,Java的基础,Java面向对象的概念,J ...

  8. java joinpoint教程_java – 使用aspectJ在AOP中连接点VS进行JoinPoint?

    任何人可以告诉我,Joinpoint和Proceedingjoinpoint有什么区别? 何时在方面的类方法中使用Joinpoint和Proceedingjoinpoint? 我在AspectJ类中使 ...

  9. java map 教程_Java Map接口

    Java Map接口 在本教程中,我们将学习Java Map接口及其方法. Java collections框架的Map接口提供了Map数据结构的功能. 它实现了Collection接口. map的工 ...

最新文章

  1. Python 模块学习:os模块
  2. C#算法设计查找篇之02-二分查找
  3. 使用 AudioContext restart 音频
  4. 画面设置_LOL手游设置界面翻译:基本设置/画面/音效/功能与快捷语音
  5. 关于tomcat5.5或6.0免安装版,点击startup.bat启动自动消失问题
  6. Prompt范式,真香
  7. php版canvas,PHP实现将HTML5中Canvas图像保存到服务器
  8. 如何在macOS中得到“另存为”快捷方式
  9. atmega328p引脚图_Arduino UNO兼容ATmega328开发板-Seeeduino v4.0,附原理图/PCB/使用说明等...
  10. 计算机业打字排版比赛计算机实施方案,大学“新生杯”计算机打字比赛活动策划书...
  11. 抖音康辉机器人_央视主持人太会玩!康辉录抖音,笑死了!
  12. MacBook苹果系统下安装Windows XP双系统多分区问题解决
  13. html复选框打钩行变颜色,Excel 单元格打勾会变颜色,开发工具的复选框这样玩...
  14. 用计算机画画的意义,浅谈电脑绘画在美术教学中的意义.doc
  15. r语言做绘制精美pcoa图_科学网—R语言 PCA PCoA ggplot2 - 靳泽星的博文
  16. CIMISS数据获取流程
  17. 蓝桥--不同非空子串
  18. SQL反模式:实体-属性-值(EAV)问题(二)
  19. 给在线发布的cab文件进行数字签证
  20. windows 下安装 JDK (含安装包)

热门文章

  1. 人工智能实战_第二次作业_杨佳宁
  2. 测试用例设计的两个基本方法
  3. docker 查看容器启动日志 查看运行日志
  4. [NOIP2013][逆序对]火柴排队
  5. 目前流行的装修风格_2019最流行的装修风格,这些都很火!
  6. c语言编译错误信息详细解释,C语言编译错误信息说明大全
  7. 《神奇宝贝》99%的90后都看过吧?Python让我成为了一名训练师!去吧,皮卡丘!
  8. es6数组去重的三种方法
  9. 【Ctfer训练计划】——(四)
  10. 漫画:三分钟了解什么是囚徒困境