此方法的实现如下:

public void validate(JCTree tree, Env<AttrContext> env, boolean checkRaw) {
        Validator vr = new Validator(env,Check.this);
        vr.validateTree(tree, checkRaw, true);
}

这个方法在Attr中有两处调用,如下:

checkRaw为false表示不用检查是否为Raw类型。这样就不会出现这样的警告 ”找到原始类型: {0} 缺少泛型类{1}的类型参数“

关于Raw类型参见:https://www.cnblogs.com/extjs4/p/9209276.html

另外还有一个方法调用如上方法进行实现,代码如下:

public  void validate(JCTree tree, Env<AttrContext> env) {
        validate(tree, env, true);
} 

Validate a type expression. That is,check that all type arguments of a parametric type are within

their bounds. This must be done in a second phase after type attribution
since a class might have a subclass as type parameter bound. E.g:

class B<A extends C> { ... }
class C extends B<C> { ... }

and we can't treeMaker sure that the bound is already attributed because of possible cycles.
AttrVisitor method: Validate a type expression, if it is not null, catching and reporting any completion failures.

调用这个方法的地方如下截图。

还有另外的地方调用这个方法,代码如下:

 /** AttrVisitor method: Validate a list of type expressions.
*/
public void validate(List<? extends JCTree> trees, Env<AttrContext> env) {
        for (List<? extends JCTree> l = trees; l.nonEmpty(); l = l.tail) {
            validate(l.head, env);
        }
}

这个方法调用地方的截图如下:

  

  

  

Check类的validate方法解读的更多相关文章

  1. 在动作类上加上SkipValidation 在反射时候会获取到该反射信息 就不会执行validate方法

    在动作类上加上SkipValidation 在反射时候会获取到该反射信息 就不会执行validate方法

  2. struts2:数据校验,通过Action中的validate()方法实现校验,图解

    根据输入校验的处理场所的不同,可以将输入校验分为客户端校验和服务器端校验两种.服务器端验证目前有两种方式: 第一种 Struts2中提供了一个com.opensymphony.xwork2.Valid ...

  3. struts2:数据校验,通过Action中的validate()方法实现校验(续:多业务方法时的不同验证处理)

    前文:struts2:数据校验,通过Action中的validate()方法实现校验,图解 如果定义的Action中存在多个逻辑处理方法,且不同的处理逻辑可能需要不同的校验规则,在这种情况下,就需要通 ...

  4. 浅析调用JSR303的validate方法, 验证失败时抛出ConstraintViolationException

    废话不多说,直接进入正题:如何使用JSR303的validate,进行数据校验,失败后直接抛出异常加入流转信息中,并在form页面提示出来. 首先我们为了启用验证,需要向 项目中添加Bean验证的实现 ...

  5. python(六):面型对象--类的特殊方法

    一.跟实例创建和执行有关的 __new__.__init__.__call__. 类加括号调用了__init__方法来创建一个实例对象.这一过程分成了两步: 类调用__new__来创建实例对象,__n ...

  6. 面向对象 - 1.面向过程/2.面向对象/3.如何使用类/4.__init__方法/5.属性查找/6.补充知识/7.可扩展性高

    编程范式(流派): 面向对象编程,面向过程编程 各有用处!! 编程:语法+数据结构(list dict)+算法(逻辑)-----------------------------------1.面向过程 ...

  7. Yii2 提供可以用属性的方式去获取类的一个方法

    刚开始用 Yii 的小朋友可能对下面的写法非常疑惑: public function actionIndex() { $user = User::find()->where(['name'=&g ...

  8. Python全栈开发之7、面向对象编程进阶-类属性和方法、异常处理和反射

    一.类的属性 1.@property属性 作用就是通过@property把一个方法变成一个静态属性 class Room: def __init__(self,name,length,width,he ...

  9. Java安全之原生readObject方法解读

    Java安全之原生readObject方法解读 0x00 前言 在上篇文章分析shiro中,遇到了Shiro重写了ObjectInputStream的resolveClass导致的一些基于Invoke ...

随机推荐

  1. 一种基于Redis的10行代码实现IP频率控制方法

    优点:可支持海量访问的频率控制,只需要增加Redis机器,单个Redis节点(只占用一个cpu core)即可支持10万/s以上的处理. 基于IP频率限制是种常见需求,基于Redis可以十分简单实现对 ...

  2. day08(异常处理,创建异常,finally,throws和throw的区别)

    异常处理, 异常的产生  运行时异常:程序运行中产生的异常:RuntimeException类.   编译时异常:程序在编译时产生的异常:除了RuntimeException类  其他都是编译时产生的 ...

  3. (最短路 Floyd)Cow Contest --POJ--3660

    链接: http://poj.org/problem?id=3660 思路: 1.  1->2->3==1->3 2.  记录每次的比赛人员 3.  每个人只能跟他序号不同的人比赛, ...

  4. MFC OnOk(),OnCancel(),OnClose(),OnDestroy()的区别总结

    MFC OnOk(),OnCancel(),OnClose(),OnDestroy()的区别总结(转) 第一,OnOK()和OnCancel()是CDialog基类的成员函数,而OnClose()和O ...

  5. Linux下配置Nginx(在root的/etc/rc.local里配置开机启动功能http://tengine.taobao.org/)

    上面是下载的包下载地址 http://tengine.taobao.org/download_cn.html nginx官网http://nginx.org/ 下一步 下一步 其中remote为重要属 ...

  6. EasyUI 让dialog中的treegrid的列头固定

    先上效果: 最主要是在treegrid要加上"fit:true "如果不加那么就会用diglog的滚动条,导致treegrid的头就没办法固定. Code<div id=&q ...

  7. 【TFS 2017】使用浏览器上传文件(TFVC)或者编辑代码,错误提示TF14098,需要对文件有PendChange 权限

    从TFS 2015开始,微软在TFS系统中增加了一个非常吸引开发人员的功能,"快速代码编辑器" (Quick Code Editor).使用这个功能,你可以在任何安装了浏览器的设备 ...

  8. Django:model.save()的时候在干什么

    转:https://www.cnblogs.com/zywscq/p/5397439.html Model.save(force_insert=False, force_update=False, u ...

  9. js获取select下拉框的value值和text文本值

    介绍一种取下拉框值以及绑定下拉框数据的方法    这里用到的jquery-ui-multiselect插件 1.前台html代码 <span class="ModuleFormFiel ...

  10. webapi token、参数签名是如何生成的(转载)

    API接口保障安全性原则:1.有调用者身份2.请求的唯一性3.请求的参数不能被篡改4.请求的有效时间 在刚接触接口开发时,可能脑子里压根就没有这个接口调用安全性的原则,但常识性的经验告诉我们,每一个请 ...