Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重新定义静态最终图案_Java_Design Patterns_Open Source - Fatal编程技术网

Java 重新定义静态最终图案

Java 重新定义静态最终图案,java,design-patterns,open-source,Java,Design Patterns,Open Source,这行代码包含一个bug INVALID\u TOKEN\u错误regex是错误的,mantainers不可能很快修复它 除了分岔库之外,还有什么方法可以在我自己的代码中安全地重新定义它吗 对于不想打开链接的用户,以下是相关代码: public class BearerToken { [...] static final Pattern INVALID_TOKEN_ERROR = Pattern.compile("\\s*error\\s*=\\s*invalid_token"); 不,

这行代码包含一个bug

INVALID\u TOKEN\u错误
regex是错误的,mantainers不可能很快修复它

除了分岔库之外,还有什么方法可以在我自己的代码中安全地重新定义它吗

对于不想打开链接的用户,以下是相关代码:

public class BearerToken {
  [...]
  static final Pattern INVALID_TOKEN_ERROR = Pattern.compile("\\s*error\\s*=\\s*invalid_token");

不,我不这么认为。反射不会将您保存在此处(请参阅),无法更改最后一个字段。例如,如果字段是字符串,则该值将内联到已编译代码中,因此更改它可能会导致灾难。。。
因此,您的选择是对维护人员施加压力,或者抛出代码。

尽管您不能替换
模式
对象,因为它是最终的,但您可以使用反射操作对象的成员字段
无效\u标记\u错误

更新私有字段
字符串模式
,然后在
无效\u令牌\u错误

如何更新私有变量:


如何调用私有方法:

创建自己的
com.google.api.client.auth.oauth2.BearerToken
类,并确保它所在的JAR/WAR/文件夹位于原始库之前的类路径中。这样你就可以把它放在下面了。我相信即使是最初的图书馆也会使用它。(请检查一下。)


注意:您可以在同一个包中但在另一个物理文件夹/目录中创建类。因此,您可以访问其他人包中的包专用(默认访问)字段。当JVM在运行时搜索要加载的类时,它会按照给定的顺序搜索类路径。使用类的第一个匹配项。

使用。链接的示例是一个
private
字段,因此您可以忽略其中的大部分内容。这很有趣,您是否介意用一个示例代码思想扩展一下回复?这里是爪哇岛。谢谢