[英]Is there a way to access package-private String.isLatin1() from java.util package using jdk.internal.access.SharedSecrets?
[英]How to extend package-private class in `java.util`
我想用一个自定义的hashCode/equals
实现扩展Collections.UnmodifiableRandomAccessList
,但不要弄乱委托或复制和粘贴实现。 在受信任的代码中,我认为这很容易。 但是,尝试在java.util
包java.util
声明新类的尝试给了我SecurityException
。 有什么办法解决吗?
如果您能够覆盖它,它将为您提供机会编辑状态,这与类的目的(不变性)相矛盾。 Java选择将其包括为包私有的,但在其他实例(如String
)中,这些预防措施是使用final
来实现的,还可以防止子类化。
[附录]两个hashCode/equals
委托给要包装的列表,因此对要包装的列表进行子类化也将更改UnmodifiableRandomAccessList
的行为。
HotSpot使用至少三个ClassLoader,它们负责将类加载到JVM中。 系统ClassLoader(用于加载用户代码的系统)拒绝将类加载到某些名称空间中,例如java
和java.util
(但不能加载,例如, java.nio
)。 AFAIK,否则无法说服它。 解决方案是通过-Xbootclasspath/a
此处介绍 -Xbootclasspath/a
JVM开关,要求引导类加载器(加载Java基类的加载器)执行此操作 。
顺便说一句,为了方便地实现委托给另一个实现的List
,请参见Guava的ForwardingList
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.