Location
行列位置
基本信息
| 属性 | 值 |
|---|---|
| 路径 | com.github.lunatrius.ingameinfo.parser.text.Location |
| 行数 | 40 |
成员
| 成员 | 行 | 说明 |
|---|---|---|
构造 Location(int row, int column) |
:10 |
— |
toString() |
:16 |
调试输出 |
clone() |
:21 |
protected |
setRow(int) / setColumn(int) |
:25 / :29 |
可变 |
getRow() / getColumn() |
:33 / :37 |
访问器 |
⚠️ 行号从 1 还是 0 开始,源码未声明,也无法从本类判断 —— Tokenizer 负责递增,本类只存值。
clone 的两个问题(:21-23)
⚠️ clone() 是 protected,且没有 implements Cloneable。
Object.clone() 是 protected native,本类覆写为 protected 并加宽可见性
(同为 protected,无实际变化)。
clone() 内部若用 super.clone(),因未实现 Cloneable 会抛
CloneNotSupportedException(受检);若用 new Location(row, column)
则不抛。行数只有 40,无法从体量判断,两种写法都可能。
⚠️ 没有覆写 equals / hashCode ——
两个表示同一位置的 Location 不相等。用于错误信息时无影响。
⚠️ 字段可变(有 setter),
而 Token 的 start / end 各持有一个 Location ——
共享同一实例时被改会污染 token 自身的定位信息。
使用方
Token 的构造器(:37)接收 Location start, Location end,
Tokenizer 在扫描时构造它们。
最终由 TextParser 的异常路径用于报错定位
(AlignmentException 只带 Alignment,
不带 Location —— 所以行列信息没有贯通到异常里)。
相关
- Token - 持有
Location - Tokenizer - 构造
Location - AlignmentException - 语法异常(未携带位置)