关于class的签名Signature



举例1:
public class Test05<A,
B extends java.util.List<String>,
C extends InputStream&Serializable> {
public <AA extends A,BB extends B,CC extends BB> void test1(
AA a,
List<BB> b,
List<? extends CC> c
){
}
public void test(){
List<? extends Number> a = new ArrayList<Integer>();
List<? super Integer> b = new ArrayList<Number>();
List<?> c = new ArrayList<String>();
}
}
类的签名如下:
< A:Ljava/lang/Object; B::Ljava/util/List<Ljava/lang/String;>; C:Ljava/io/InputStream;:Ljava/io/Serializable; > Ljava/lang/Object;
其中的Ljava/lang/Object;表示这个类的父类。而B extends java.util.List<String>被描述为B::Ljava/util/List<Ljva/lang/String;>;因为List是接口类型,而ClassBound为空就会出现这样的情况。
方法的签名如下:
<AA:TA;BB:TB;CC:TBB;> (TAA;Ljava/util/List<TBB;>;Ljava/util/List<+TCC;>;) V
举例2:
class pc<T>{}
interface ifc1<T>{}
interface ifc2<T>{}
public class Test05<T>
extends pc<List<? extends String>>
implements ifc1<String>,ifc2<List<? extends Number>> {
List<? extends Number> a = new ArrayList<Integer>();
List<? super Integer> b = new ArrayList<Number>();
List<?> c = new ArrayList<String>();
}
类的签名如下:
<T:Ljava/lang/Object;> Lcom/test19/pc<Ljava/util/List<+Ljava/lang/String;>;>; Lcom/test19/ifc1<Ljava/lang/String;>; Lcom/test19/ifc2<Ljava/util/List<+Ljava/lang/Number;>;>;
三个字段的签名如下:
Ljava/util/List<+Ljava/lang/Number;>; Ljava/util/List<-Ljava/lang/Integer;>; Ljava/util/List<*>;
class TestClassSig<T> extends Parent<Integer>{
class BB<B extends T>{
}
}
则字段签名为:
com.test19.TestClassSig$BB(com.test19.TestClassSig);
descriptor: (Lcom/test19/TestClassSig;)V
flags:
Code:
stack=2, locals=2, args_size=2
0: aload_0
1: aload_1
2: putfield #10 // Field this$0:Lcom/test19/TestClassSig;
5: aload_0
6: invokespecial #12 // Method java/lang/Object."<init>":()V
9: return
LineNumberTable:
line 19: 0
LocalVariableTable:
Start Length Slot Name Signature
0 10 0 this Lcom/test19/TestClassSig$BB;
LocalVariableTypeTable:
Start Length Slot Name Signature
0 10 0 this Lcom/test19/TestClassSig<TT;>.BB<TB;>;
可以看到LocalVariableTypeTable的Signature的签名为:Lcom/test19/TestClassSig<TT;>.BB<TB;>;
关于class的签名Signature的更多相关文章
- 转:微信开发之使用java获取签名signature(贴源码,附工程)
微信开发之使用java获取签名signature(贴源码,附工程) 标签: 微信signature获取签名 2015-12-29 22:15 6954人阅读 评论(3) 收藏 举报 分类: 微信开发 ...
- 微信开发之使用java获取签名signature(贴源码,附工程)
一.前言 微信接口调用验证最终需要用到的三个参数noncestr.timestamp.signature: 接下来将会给出获取这三个参数的详细代码 本文的环境eclipse + maven 本文使用到 ...
- java接口签名(Signature)实现方案续
一.前言 由于之前写过的一片文章 (java接口签名(Signature)实现方案 )收获了很多好评,此次来说一下另一种简单粗暴的签名方案.相对于之前的签名方案,对body.paramenter.pa ...
- java接口签名(Signature)实现方案
预祝大家国庆节快乐,赶快迎接美丽而快乐的假期吧!!! 一.前言 在为第三方系统提供接口的时候,肯定要考虑接口数据的安全问题,比如数据是否被篡改,数据是否已经过时,数据是否可以重复提交等问题.其中我认为 ...
- 微信js获得签名signature
服务器端: 1 获取微信js accessToken 备注:access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token. 开发者需要进行妥善保存.access_ ...
- Token以及签名signature的设计与实现
LZ第一次给app写开放接口,把自己处理Token的实现记录下来,目的是如果以后遇到好的实现,能在此基础上改进.这一版写法非常粗糙,写出来就是让大家批评的,多多指教,感谢大家. 当初设计这块想达到的效 ...
- 微信JS-SDK签名signature错误代码4029
一般是url的错,url需要动态获取 c#的写法: //Request.Url.ToString()这个获取的是没有端口号的有些网站有端口号 string url = Request.Url.Orig ...
- Python下RSA加密/解密, 签名/验证
原文是py2环境,而我的环境是py3,所以对原代码做了修改:decode(), encode() import rsa # 生成密钥 (pubkey, privkey) = rsa.newkeys(1 ...
- python下RSA 加密/解密,签名/验证
基于win7 + python3.4 原文是py2环境,而我的环境是py3,所以对原代码做了修改:decode(), encode() import rsa # 生成密钥 (pubkey, privk ...
随机推荐
- HTML中submit和button的区别
submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了. 如果表单在点击提交按钮后需要用JS进行处理(包括输入验证)后再提交的话,通常都必须把submit改成butt ...
- 使用Octopress博客 搭建博客
Octopress介绍 Octopress是一款优秀的静态化博客系统,也是一个本地化的博客系统,之前部落在介绍免费开源Github Pages空间时有提到过Octopress,Github为我们提供长 ...
- [label][翻译][JavaScript]如何使用JavaScript操纵radio和check boxes
Radio 和 check boxes是form表单中的一部分,允许用户通过鼠标简单点击就可以选择.当与<textarea>元素的一般JavaScript操纵相比较,这些表单控件(form ...
- 动态载入DLL所需要的三个函数详解(LoadLibrary,GetProcAddress,FreeLibrary)
动态载入 DLL 动态载入方式是指在编译之前并不知道将会调用哪些 DLL 函数, 完全是在运行过程中根据需要决定应调用哪些函数. 方法是:用 LoadLibrary 函数加载动态链接库到内存,用 Ge ...
- 【WinRT】让控件飞,WinRT 中实现 web 中的 dragable 效果
由于在 xaml 体系中,控件没有传统 WebForm 中的 Left.Top.Right.Bottom 这些属性,取而代之的是按比例(像 Grid)等等的响应布局.但是,传统的这些设置 Left.T ...
- Elasticsearch 的一些关键概念
我更喜欢把 Elasticsearch 作为一种 nosql 去理解,它的一些开发概念和 MongoDB 以及 Redis 没有太大的区别,不过了解 Elasticsearch 中的一些核心概念对于你 ...
- java多线程 —— 两种实际应用场景模拟
最近做的偏向并发了,因为以后消息会众多,所以,jms等多个线程操作数据的时候,对共享变量,这些要很注意,以防止发生线程不安全的情况. (一) 先说说第一个,模拟对信息的发送和接收.场景是这样的: 就像 ...
- 微软研发流程(ALM)管理培训会议(比亚迪汽车)
主要讨论和演示整体研发流程,包括需求管理.项目计划.开发管理.生成和发布.测试管理等. Figure 1 - 客户现场培训 Figure 2 - 客户现场培训 Figure 3 - 客户现场培训
- Alwayson--使用证书创建高可用性组
--场景: --有服务器SQLNode11,SQLNODE21,SQLNODE31三台在同一故障转移群集SQLNode01中 --的数据库服务器,安装SQL SERVER 2012 并配置启动alwa ...
- Asp.net Core 2.1 Kestrel 现在支持 多协议处理(Tcp)
地址:https://github.com/davidfowl/MultiProtocolAspNetCore.git 在一个Kestrel服务上可以同时处理Tcp,Http,Https等多种协议. ...