Java中的synthetic

Java中的合成方法(Synthetic Methods) 合成方法是由Java编译器在编译过程中自动生成的方法。它们不是开发人员明确编写的,而是为了支持编译器内部的实现细节而生成的。合成方法通常用于处理Java语言的特殊情况或编译器优化。合成方法是Java编译器自动生成的方法,用于支持编译器内部的实现细节。它们用于处理Java语言的特殊情况或编译器优化。本文介绍了合成方法的概念、用途和示例代码,涵盖了内部类访问外部类的私有成员、枚举类的实现以及Lambda表达式和匿名内部类的实现。希望本文能够帮助您理解Java中的合成方法。如有任何疑问,请随时提问。 阅读详情

转自:http://www.linuxidc.com/Linux/2010-05/26396.htm

有synthetic标记的field和method是class内部使用的,正常的源代码里不会出现synthetic field。小颖编译工具用的就是jad.所有反编译工具都不能保证完全正确地反编译class。所以你不能要求太多。 

下面我给大家介绍一下synthetic 

下面的例子是最常见的synthetic field 
Java代码
  1. class parent {   
  2.     public void foo() {   
  3.     }   
  4.   
  5.     class inner {   
  6.         inner() {   
  7.       foo();   
  8.     }   
  9.     }   
  10. }  

非static的inner class里面都会有一个this$0的字段保存它的父对象。编译后的inner class 就像下面这样: 
Java代码
  1. class parent$inner   
  2. {   
  3. synthetic parent this$0;   
  4. parent$inner(parent this$0)   
  5. {   
  6. this.this$0 = this$0;   
  7. this$0.foo();   
  8. }   
  9. }  

所有父对象的非私有成员都通过 this$0来访问。 

还有许多用到synthetic的地方。比如使用了assert 关键字的class会有一个 
synthetic static boolean $assertionsDisabled 字段 
使用了assert的地方 
assert condition; 
在class里被编译成 

Java代码
  1. if(!$assertionsDisabled && !condition)   
  2. {   
  3. throw new AssertionError();   
  4. }  


还有,在jvm里,所有class的私有成员都不允许在其他类里访问,包括它的inner class。在java语言里inner class是可以访问父类的私有成员的。在class里是用如下的方法实现的: 
Java代码
  1. class parent   
  2. {   
  3.   private int value = 0;   
  4.   synthetic static int access$000(parent obj)   
  5.   {   
  6.     return value;   
  7.   }   
  8. }  

在inner class里通过access$000来访问value字段。 


synthetic的概念 

According to the JVM Spec: "A class member that does not appear in the source code must be marked using a Synthetic attribute." Also, "The Synthetic attribute was introduced in JDK release 1.1 to support nested classes and interfaces."  

I know that nested classes are sometimes implemented using synthetic fields and synthetic contructors, e.g. an inner class may use a synthetic field to save a reference to its outer class instance, and it may generate a synthetic contructor to set that field correctly. I'm not sure if it Java still uses synthetic constructors or methods for this, but I'm pretty sure I did see them used in the past. I don't know why they might need synthetic classes here. On the other hand, something like RMI or java.lang.reflect.Proxy should probably create synthetic classes, since those classes don't actually appear in source code. I just ran a test where Proxy did not create a synthetic instance, but I believe that's probably a bug. 

Hmm, we discussed this some time ago back here. It seems like Sun is just ignoring this synthetic attribute, for classes at least, and we should too. 

注意上文的第一处黑体部分,一个类的复合属性表示他支持嵌套的类或者接口 
注意上文的第二处黑体部分,说明符合这个概念就是OO思想中的类的复合,也就是只要含有其它类的引用即为复合。
synthetica 2.1破解版 Synthetica is a Java program that is used to synthesize, analyze and simulate spatial linkages. Its' open architecture allows advanced users to add Java code to the system. It runs on Win32, MacOSX, Linux, Solaris and uses JOGL (OpenGL) for 3d graphics. 立即下载

相关推荐

synthetica.jar spark 2.5.8

在开发spark2.5.8的时候用到,希望大家也能找到

Java冷知识(三)编译器的花招之synthetic修饰符

首先我们应该达成一个共识:很多的Java语法糖都是编译器赋予的,而JVM是一个与Java语言解耦的平台。有了这个共识,再来看今天的主角:synthetic修饰符。 我们在阅读JDK反射包源码时,会遇到isSynthetic()方法,其实现之一是Modifier.isSynthetic(getModifiers()),其他实现方式的原理一样。Modifier是专门定义修饰符的类,其中static f...

凤瓦力 1637

HttpClient跳过HTTPS证书验证的3种实战方法(含完整代码示例)

本文详细介绍了HttpClient跳过HTTPS证书验证的3种实战方法,包括自定义TrustManager、SSLContext配置和HttpClientBuilder高级定制,并提供完整代码示例。这些方法适用于开发和测试环境,帮助开发者快速解决自签名证书或未认证证书导致的HTTPS请求失败问题,但需注意生产环境的安全风险。

weixin_29213655的博客 528

Java Synthetic Method

参考链接:https://www.oschina.net/code/snippet_2438265_54869The Java Language Specification (section 13.1)Java语言规范13章写道 :由编译器产生的任何构建,如果在源码中没有对应的构建存在,那么这个构建就必须被标记为synthetic(除了默认构造器和类初始化方法。)原话如下:“Any constru...

明朗晨光的专栏 2450

采用离散模型搭建永磁同步电机控制系统

永磁同步电机发电系统分为控制器和发电机,通过simulink仿真软件进行发电系统的离散系统仿真。离散搭建仿真,可以更方便的自动代码生成。通过实践经验离散模块搭建,更能加深对整个控制系统的理解。离散系统在矢量控制中经常涉及到上个开关周期的角度,电压,或者预测下个周期的角度,电流,一般都是通过延时模块实现。PWM比较值寄存器被改写后都是使能了预装载,采样后触发计算到比较值生效可以延时0.5个开关周期Ts,也可以延时1个开关周期Ts,可以通过离散系统进行仿真,大大缩短开发周期。

f1072239934的博客 2862

3D视觉-结构光测量-线结构光测量

线结构光测量中,由激光器射出的激光光束透过柱面透镜扩束,再经过准直,产生一束片状光。这片光束像刀刃一样横切在待测物体表面,因此线结构光法又被成为光切法。线结构光测量常采用二维面阵CCD作为接受器件,因此只要通过增加垂直于面阵探测器的第三维度方向,就可以实现对三维物体的测量。

qq_20660115的博客 3121

朝花夕拾——Java的synthetic修饰词

Ok,目前为止,我还只是Android coder,一切对其他的学习都是以Android 为主线的支线任务。所以为什么会提到这个方法呢?是来自于google官方的性能建议文档的这样一句话: Consider Package Instead of Private Access with Private Inner Classes 考虑包内访问来取代访问私有内部类的私有修饰的方法或变量 为什么

走川 7946

Android音频混音器AudioMixer实战:从多路输入到设备播放的完整流程解析

本文深入解析了Android平台上音频混音器AudioMixer的完整工作流程,涵盖从多路音频输入、轨道创建与配置、AudioBufferProvider数据源接入,到核心混音处理与最终设备播放的全过程。文章重点探讨了如何高效管理音频数据流、配置音量与重采样参数,并提供了缓冲区管理与性能优化的实战技巧,帮助开发者构建稳定、低延迟的音频应用。

l3m4n的博客 340

探索Java中隐藏的访问权限synthetic

探索Java中隐藏的访问权限synthetic 首先参考一下 Java8 虚拟机规范中对The Synthetic Attribute的相关描述: A class member that does not appear in the source code must be marked using a Synthetic attribute, or else it must have its ACC_SYNTHETIC flag set. The only exceptions to this requi

qq_43342056的博客 403

Day470&471.Netty概述&Netty高性能架构设计 -netty

Netty概述 一、原生 NIO 存在的问题 NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。 需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的 NIO 程序。 开发工作量和难度都非常大:例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流的处理等等。 JDK NIO

阿昌爱Java 1570

Qt入门教程【基础控件篇】QLineEdit输入框

QLineEdit输入框

小鱼酱的博客 3260

Java中的synthetic详解

https://blog.youkuaiyun.com/moakun/article/details/80577702 synthetic介绍 有synthetic标记的field和method是class内部使用的,是编译器自动生成的,正常的源代码里不会出现synthetic field。 举例 1.内部类访问外部类方法 下面的例子是最常见的synthetic field class parent { public void foo() { } class inn

yygr的博客 2115

Kimi Code国产AI编程助手安装使用详细教程

Kimi Code 开发者智能编程服务简介:Kimi Code 是专为开发者提供的 AI 编程辅助工具,基于旗舰模型 Kimi K3(2.8万亿参数,支持100万token上下文)。提供 CLI、VS Code 插件等形式,支持代码阅读、编辑等功能。用户可通过API Key接入第三方工具。安装简单(Windows/Mac/Linux一键脚本),需在官网生成API密钥并登录使用。注意账户需充值余额方可正常调用服务。

猿小白的博客 2042

synthetic Java合成类型

Synthetic   看Class源码的时候,看到有个关键字Synthetic以及isSynthetic()方法,遂有兴趣查阅了一番。   一开始以为,就是复合类型(引用类型),也就是非基本类型,可后来看到Java语言规范的描述(以及写代码测试),才知道不是,但看了许久,也不知道具体: Any constructs introduced by a Java compiler that do ...

通往神秘的道路的专栏 1011

零基础DSP实战TMS320F28035:第九节,ADC比较器&EPWM

ADC比较器框图如下所示:-电压-----------------------------输出-电压A>电压B------------------ 1-电压A

sinat_30943509的博客 2534

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

java的synthetic_Java中的synthetic

有synthetic标记的field和method是class内部使用的,正常的源代码里不会出现synthetic field。小颖编译工具用的就是jad.所有反编译工具都不能保证完全正确地反编译class。所以你不能要求太多。下面我给大家介绍一下synthetic下面的例子是最常见的synthetic field1 classparent {2 public voidfoo() {3 }...

weixin_42511373的博客 251

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java issynthetic_Java synthetic

点击上方「蓝字」关注我们 读完这篇文章你将会收获到synthetic fieldssynthetic methodsynthetic class概述上一篇 Java 枚举 提及到编译成 class 文件之后、编译器会在枚举类里帮我们生成一个 VALUES 的静态数组 , 这种编译器生成的都有一个 flag 叫做 synthetic 那么 synthetic 的定义是什么、什么情况下才会有这个...

weixin_30579719的博客 512

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java synthetic field_浅谈Java编程中的synthetic关键字

java synthetic关键字。有synthetic标记的field和method是class内部使用的,正常的源代码里不会出现synthetic field。小颖编译工具用的就是jad.所有反编译工具都不能保证完全正确地反编译class。所以你不能要求太多。下面我给大家介绍一下synthetic下面的例子是最常见的synthetic fieldclass parent {public voi...

weixin_35056641的博客 779

java的synthetic_探索Java中隐藏的访问权限synthetic

首先参考一下 Java8 虚拟机规范中对The Synthetic Attribute的相关描述:A class member that does not appear in the source code must be marked using a Synthetic attribute, or else it must have its ACC_SYNTHETIC flag set. The...

weixin_39966765的博客 155

java synthetic field_Java synthetic

读完这篇文章你将会收获到synthetic fieldssynthetic methodsynthetic class概述上一篇 Java 枚举 提及到编译成 class 文件之后、编译器会在枚举类里帮我们生成一个 VALUES 的静态数组 , 这种编译器生成的都有一个 flag 叫做 syntheticimage那么 synthetic 的定义是什么、什么情况下才会有这个 flag ?由编译器生...

weixin_28756413的博客 204

java synthetic_浅谈Java编程中的synthetic关键字

导读正文java synthetic关键字。有synthetic标记的field和method是class内部使用的,正常的源代码里不会出现synthetic field。小颖编译工具用的就是jad.所有反编译工具都不能保证完全正确地反编译class。所以你不能要求太多。下面我给大家介绍一下synthetic下面的例子是最常见的synthetic fieldclass parent {public...

weixin_34268617的博客 182

java synthetic_synthetic

/*有synthetic标记的field和method是class内部使用的,正常的源代码里不会出现synthetic field。小颖编译工具用的就是jad.所有反编译工具都不能保证完全正确地反编译class。所以你不能要求太多。下面我给大家介绍一下 synthetic下面的例子是最常见的 synthetic field*/class parent{public void foo(){Syste...

weixin_31324995的博客 293

java synthetic_Java冷知识(三)编译器的花招之synthetic

我们在阅读JDK反射包源码时,会遇到isSynthetic()方法,其实现之一是Modifier.isSynthetic(getModifiers()),其他方式的原理一样。Modifier是专门定义修饰符的类,其中static final int SYNTHETIC = 0x00001000 表名synthetic是修饰符的一种。我尝试用synthetic来修饰自定义的Class/Field/M...

weixin_39643679的博客 448
上一篇: vmware 下 mac os安装
下一篇: 关于cocos2d-x 3.0的点击交互处理
骑行的蜗牛
博客等级 码龄21年 107粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值