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 —— 所以行列信息没有贯通到异常里)。

相关