• 13-spring学习-class类型表达式


    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(),否则就会报错

    运行结果:

     

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

  • 相关阅读:
    FineBI客户画像分析与客户价值模型快速入门
    大数据分析免费学习教程
    Xshell连接不上Ubuntu解决方式
    Jenkins时区设置为北京时间
    ASP.NET Core 与支付宝开发文档
    .NET Core 从 Github到 Nuget 持续集成、部署
    使用 dotnet cli 命令上传 nuget 程序包
    发布你的程序包到Nuget
    ASP.NET Core 判断请求是否为Ajax请求
    ASP.NET Core 如何在运行Docker容器时指定容器外部端口(docker compose)
  • 原文地址:https://www.cnblogs.com/alsf/p/8075875.html
Copyright © 2020-2023  润新知