Class表达式

spring中对于class反射机制也有自己的处理。

1,class::使用T(类名)的形式可以取得一个指定泛型类型的Class对象

范例:

package com.Spring.ELDemo;
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext; public class TestSimple2 { public static void main(String[] args) { ExpressionParser parser=new SpelExpressionParser();
Expression exp=parser.parseExpression("T(String)");
EvaluationContext context=new StandardEvaluationContext();
System.out.println(exp.getValue(context));
}
}

运行结果:

class java.lang.String

计算结果:Class<String>。

2,静态属性:如果调用的静态属性则使用:“T(类).静态属性名称”。

Expression exp=parser.parseExpression("T(Integer).MAX_VALUE");

运行结果:

3,静态方法

例如在Integer类里面有一个parseInt()的方法。此方法可以接收一个字符串,同时返回一个Int型数据

范例:

Expression exp=parser.parseExpression("T(Integer).parseInt('123123')");

运行结果:

4,无参构造实例化

虽然给出了静态操作,但是严格来说使用最多的情况一定是类产生实例化对象,此处依然可以使用同样的方式完成,可以直接使用“new 类型()”的方式实例化对象。

范例:实例化Date对象。

package com.Spring.ELDemo;
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext; public class TestSimple2 { public static void main(String[] args) { ExpressionParser parser=new SpelExpressionParser();
Expression exp=parser.parseExpression("new java.util.Date()");
EvaluationContext context=new StandardEvaluationContext();
System.out.println(exp.getValue(context));
}
}

运行结果:

但是现在都是调用无参构造,如何调用有参构造。

5,有参构造实例化

Expression exp=parser.parseExpression("new String('hello')");

运行结果:

6,Instanceof:在对象的开发过程中,也可以进行实例对象类型的判断。

使用方式:对象实例   instanceof  T(类)

范例:判断一个字符串是否String的实例。

package com.Spring.ELDemo;
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext; public class TestSimple2 { public static void main(String[] args) { ExpressionParser parser=new SpelExpressionParser();
Expression exp=parser.parseExpression("'hello' instanceof T(String)");
EvaluationContext context=new StandardEvaluationContext();
System.out.println(exp.getValue(context));
}
}

注意:上面的String一定要加上T(),否则就会报错

运行结果:

利用字符串完整实现类反射机制的各种操作,它的各种操作只能处理很简单的功能。

13-spring学习-class类型表达式的更多相关文章

  1. Spring学习记录(七)---表达式语言-SpEL

    SpEL---Spring Expression Language:是一个支持运行时查询和操作对象图表达式语言.使用#{...}作为定界符,为bean属性动态赋值提供了便利. ①对于普通的赋值,用Sp ...

  2. Spring学习之切入点表达式

    链接地址:http://jinnianshilongnian.iteye.com/blog/1415606

  3. Spring的通知类型,切入表达式写法

    转载自  https://www.cnblogs.com/ltfxy/p/9882697.html Spring中通知类型: 前置通知:目标方法执行之前进行操作,可以获得切入点信息 后置通知: 目标方 ...

  4. Spring学习笔记(13)——aop原理及拦截器

    原理 AOP(Aspect Oriented Programming),也就是面向方面编程的技术.AOP基于IoC基础,是对OOP的有益补充. AOP将应用系统分为两部分,核心业务逻辑(Core bu ...

  5. Spring学习总结(四)——表达式语言 Spring Expression Language

    SpEL简介与功能特性 Spring表达式语言(简称SpEL)是一个支持查询并在运行时操纵一个对象图的功能强大的表达式语言.SpEL语言的语法类似于统一EL,但提供了更多的功能,最主要的是显式方法调用 ...

  6. 十三 Spring的通知类型,切入表达式写法

    Spring中通知类型: 前置通知:目标方法执行之前进行操作,可以获得切入点信息 后置通知: 目标方法执行之后进行操作,可以获得方法的返回值 环绕通知:在目标方法执行之前和之后进行操作,可以终止目标方 ...

  7. [Spring学习笔记 2 ]装配各种类型的属性 map,list,array,null,properties

    一.spring Ioc容器补充(1) Spring Ioc容器 DI(依赖注入): 注入的方式:设值方法注入setter(属性注入)/构造子注入(构造函数传入依赖的对象)/字段注入field(注解) ...

  8. 不错的Spring学习笔记(转)

    Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是s ...

  9. spring学习 8-面试(事务,解决线程安全)

    1.介绍一下Spring的事物管理 参考:Spring 学习7 -事务 2.Spring如何处理线程并发问题    Spring使用ThreadLocal解决线程安全问题 参考:Spring学习11- ...

随机推荐

  1. CodeForces - 965D Single-use Stones

    题面在这里! 如果你强行把问题建模,可以发现这是一个裸的增广路,又因为这是区间连边,所以跑一个 点数O(N)边数O(N log N)的线段树优化建边的网络流即可,不知道能不能过23333 但其实这个问 ...

  2. 课堂作业-Bag类的实现

    课堂作业-Bag类的实现 要求: 代码运行在命令行中,路径要体现学号信息,IDEA中,伪代码要体现个人学号信息 参见Bag的UML图,用Java继承BagInterface实现泛型类Bag,并对方法进 ...

  3. springmvc poi实现报表导出

    1.pom文件: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</ ...

  4. Problem E: 零起点学算法34——3n+1问题

    #include<stdio.h> #include<math.h> int main() { int n; n<=pow(,); ; scanf("%d&qu ...

  5. ACM/CF赛制getstart模板

    (包含整型变量快速读入.简易循环和连续容器的迭代器循环的宏定义.调试时的运行时间输出(编译选项应有“DEBUG”宏定义)等)  1 /*================================ ...

  6. kevinekline----------------- SQLSERVER MVP

    https://twitter.com/kekline http://kevinekline.com/worth-the-wait-why-sql-server-2008-is-great/ http ...

  7. mac 安装 composer

    使用 curl 指令下载: curl -sS https://getcomposer.org/installer | php 或是沒有安裝 curl ,也可以用 php 指令下载: php -r &q ...

  8. EasyUI numbox输入框,金额格式化显示

    1.HTML文件 <th id="sellerHopePrices_Th">委托方保留价:</th> <td id="sellerHopeP ...

  9. 如何获取gcr等镜像

    在cloud.docker.com上注册一个用户,然后登录 然后在github.com上注册一个用户 通过github Desktop建立一个repository,同时加入一个Dockerfile,然 ...

  10. ubuntu-14.04.5 升级sshd到指定版本openssh-7.7p1,openssl-1.1.0h。

    升级步骤 wget https://wps-oss.oss-cn-shenzhen.aliyuncs.com/openssh_update.tar.gz tar xvf openssh_update. ...