1. 概述
- 学习 Java 反射的时候, 碰到的简单问题
- 手动可以处理, 但是真的很浪费时间
- 想熟悉一下工具的使用
2. 题目
源
Modifier.isAbstract(int modifiers); Modifier.isFinal(int modifiers); Modifier.isInterface(int modifiers); Modifier.isNative(int modifiers); Modifier.isPrivate(int modifiers); Modifier.isProtected(int modifiers); Modifier.isPublic(int modifiers); Modifier.isStatic(int modifiers); Modifier.isStrict(int modifiers); Modifier.isSynchronized(int modifiers); Modifier.isTransient(int modifiers); Modifier.isVolatile(int modifiers);
目的
System.out.println("is abstract? " + Modifier.isAbstract(modifiers)); System.out.println("is final? " + Modifier.isFinal(modifiers)); System.out.println("is interface? " + Modifier.isInterface(modifiers)); System.out.println("is native? " + Modifier.isNative(modifiers)); System.out.println("is private? " + Modifier.isPrivate(modifiers)); System.out.println("is protected? " + Modifier.isProtected(modifiers)); System.out.println("is public? " + Modifier.isPublic(modifiers)); System.out.println("is static? " + Modifier.isStatic(modifiers)); System.out.println("is strict? " + Modifier.isStrict(modifiers)); System.out.println("is synchronized? " + Modifier.isSynchronized(modifiers)); System.out.println("is transient? " + Modifier.isTransient(modifiers)); System.out.println("is volatile? " + Modifier.isVolatile(modifiers));
3. 思路
- 手打
- vim 替换
4. 解决
- 概述
- 手打的思路, 暂时就不考虑了
1. 思路1
- 概述
- 第一个思路
- 思路
- Modifier.isAbstract(int modifiers);
- System.out.println("is ? " + Modifier.isAbstract(modifiers));
- 手打加上核心关键词
- tip
- ex 表达式
- 步骤
:1,$ s/Modi/System.out.println("is ? " + /
:1, $ s/;/);/
- 手工补充上关键词
- 问题
- 步骤 1 和 2 能否合并
- 手工替换关键词, 是不是有点 low
2. 思路2
- 概述
- 尝试将 思路1 的 1, 2 步骤合而为1
- 步骤
:%s/^\(.*\);/System.out.println("is ?" + \1);/
- 手动添加 关键词
- 问题
- 合并完成了
- 使用了 ex 的 保留缓冲区
- 手工替换, 还是有点 low
- 合并完成了
3. 思路3
- 概述
- 尝试一个语句, 直接替换完成
- 步骤
:%s/\(M.*is\)\(.*\)\((.*)\);/System.out.println("is \2?" + \1\2\3);
- 手动调整 关键字 的大小写
- 问题
- 解决了关键字的填写问题
- 大小写问题, 暂时没有解决
4. 思路4
- 概述
- 改进 大小写
- 步骤
- 思路3
:%s/is \(.*\)?/is \l\1?/
5. 其他
- 问题
- 本质是一个列的变换
- 变换只需要依赖自身即可
- 这里确实说的有点不清楚
- 另一个例子
- 源
a b c windows linux others
- 目的
a. windows b. linux c. others
- 本质是一个列的变换
- vim - ex, 算是个比较有用的东西, 值得学习一下
- ex 基本操作
- ex 多标签
- ex 全局搜索
- ex 脚本
- 后续思路
- sed
- awk
- 某些 模板 也可做到同样的功能
- 技能熟练度, 也是个大问题