《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
| [c:] | 执行表达式的 ClassLoader 的 hashcode,默认值是SystemClassLoader |
| [x] | 结果对象的展开层次,默认值1 (如果对象里面包好对象,这个值大一点可以一起输出) |
使用示例
1.调用静态属性
ognl '@全路径类目@静态属性名'
示例:
ognl '@com.shirc.arthasexample.ognl.OgnlTest@static_str'
2.调用静态方法
ognl '@全路径类目@静态方法名("参数")'
示例一: 简单入参 返回普通对象
ognl '@com.shirc.arthasexample.ognl.OgnlTest@getPerson("src",18)' -X 1
示例二:简单入参 返回对象中包含对象和List
ognl '@com.shirc.arthasexample.ognl.OgnlTest@getPerson("src",18,2)' -x 1
-x 1 中的x是小写; 上面可以看到 child对象和childs列表都没有打印出来
试试 -x 2
和 -x 3
-x 2 的时候对象属性有展开,但是列表没有, -x 3 才把列表展开了
示例三: 方法A的返回值当做方法B的入参
ognl '#value1=@com.shirc.arthasexample.ognl.OgnlTest@getPerson("src",18), #value2=@com.shirc.arthasexample.ognl.OgnlTest@setPerson(#value1) ,{#value1,#value2}' -x 2
示例四:执行多行表达式,赋值给临时变量,返回一个List:
$ ognl ‘#value1=@System@getProperty(“java.home”), #value2=@System@getProperty(“java.runtime.name”), {#value1, #value2}’
@ArrayList[
@String[/opt/java/8.0.181-zulu/jre],
@String[OpenJDK Runtime Environment],
]
示例五: 方法入参是简单类型列表
ognl '@com.shirc.arthasexample.ognl.OgnlTest@getChilds({"jinjidelaomanong","jjdlmn"})' -x 2
示例六: 方法入参是一个复杂对象
先用构造函数构造一个对象
ognl 'new com.shirc.arthasexample.ognl.Shirc("jjdlmn",true)'
然后把这个对象当做入参传入;所以最终可以这么写
ognl '#obj=new com.shirc.arthasexample.ognl.Shirc("jjdlmn",true),@com.shirc.arthasexample.ognl.OgnlTest@inputObj(#obj)' -x 2
示例七: 方法入参是一个Map对象
先构造一个Map对象可以这样
ognl '#{ "foo" : "foo value", "bar" : "bar value" }'
然后把这个对象赋值给一个变量; 最后把这个变量当做入参传入;
然后把这个对象当做入参传入;所以最终可以这么写
ognl '#inputmap=#{ "foo" : "foo value", "bar" : "bar value" }, @com.shirc.arthasexample.ognl.OgnlTest@getMap(#inputmap)' -x 2
3.读取不同类型的值
读取 复杂对象、List、Map等等值的方式
示例一:访问复杂对象属性
ognl '@com.shirc.arthasexample.ognl.OgnlTest@getPerson("src",18).name' -x 4
示例二、访问List或者数组类型
ognl '@com.shirc.arthasexample.ognl.OgnlTest@getChilds({"jinjidelaomanong","jjdlmn"})[0]' -x 2
示例三: 访问Map对象
ognl '@com.shirc.arthasexample.ognl.OgnlTest@getMap()["shirc"]' -x 2
ognl '@com.shirc.arthasexample.ognl.OgnlTest@getMap()["shirc"].sex' -x 2
shirc: 是map的key; 记得要用双引号"" 引起来
Ognl 常用用法说明
#
变量引用 #this
当前对象
OGNL的变量方案很简单, 你可以用变量来保存中间结果, 并在后面的代码中再次访问它, 也可以用变量来使整个表达式更加简单易懂. OGNL中的所有变量, 对整个表达式都是全局可见的. 引用变量的方法是在变量名之前加上
# 号
OGNL在计算表达式的过程中, 随时会将当前对象保存在
"this"
变量中, 这个变量也可以象其他任何变量一样引用,用#this
表示当前对象
例如:
ognl '@com.shirc.arthasexample.ognl.OgnlTest@getMap()["shirc"].(#this.sex=="boy"?"BoyNB":"GirlNB")' -x 2
总结
面试建议是,一定要自信,敢于表达,面试的时候我们对知识的掌握有时候很难面面俱到,把自己的思路说出来,而不是直接告诉面试官自己不懂,这也是可以加分的。
以上就是蚂蚁技术四面和HR面试题目,以下最新总结的最全,范围包含最全MySQL、Spring、Redis、JVM等最全面试题和答案,仅用于参考
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
蚁技术四面和HR面试题目,以下最新总结的最全,范围包含最全MySQL、Spring、Redis、JVM等最全面试题和答案,仅用于参考
[外链图片转存中…(img-kNdS2l8W-1714689487860)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!