我对上述问题的猜测是这是不可能的,但我需要确认。所以问题是私有静态最终字符串中有一个Oracle特定的SELECT(使用ROWNUM和FOR UPDATE SKIP LOCKED关键字)。
private static final String REC_QUERY_SELECT = "SELECT * FROM ... WHERE ROWNUM <=1 for update skip locked";
我想用 HSQL 对它进行单元测试,但 HSQL 不知道这些 Oracle 关键字。我想修改 REC_QUERY_SELECT 变量(将 SELECT 修改为更简单的变量),但我不能,因为它是 final 和 String 文字。有没有办法修改它?(我不能更改代码库,我只需要编写单元测试)。我也试过这段代码:
field.setAccessible(true);
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
field.set(null, newValue);