草庐IT

make_transient

全部标签

java - 为什么 ArrayList 使用 transient 存储?

我在阅读Java的ArrayList的源代码时发现了它的支持数组声明:privatetransientObject[]elementData;为什么这需要是暂时的?为什么这个类不能序列化?感谢您的帮助! 最佳答案 它可以被序列化;ArrayList类只是自己处理事情,而不是使用默认机制。查看该类中的writeObject()和readObject()方法,它们是标准序列化机制的一部分。如果查看源代码,您会发现writeObject()没有保存后备数组。相反,它一次将元素(包括空值)序列化到size()限制。这避免了序列化数组的开销,

java - 应该将 Log4J 记录器声明为 transient 吗?

我正在使用带有Log4J的Java1.4。我的一些代码涉及序列化和反序列化值对象(POJO)。我的每个POJO都声明了一个记录器privatefinalLoggerlog=Logger.getLogger(getClass());序列化程序提示org.apache.log4j.Logger不是可序列化的。我应该使用privatefinaltransientLoggerlog=Logger.getLogger(getClass());改为? 最佳答案 使用静态记录器怎么样?或者您是否需要为每个类实例使用不同的记录器引用?静态字段默认不

java - JUnit 断言 : make the assertion between floats

我需要比较两个值:一个是字符串,另一个是float所以我将字符串转换为float,然后尝试调用assertEquals(val1,val2)但这未经授权,我猜assertEquals不接受float作为参数。在这种情况下,我的解决方案是什么? 最佳答案 您必须为Floats的断言提供一个增量:Assert.assertEquals(expected,actual,delta)虽然delta是预期和实际之间的最大差异(delta),但两个数字仍被视为相等。Assert.assertEquals(0.0012f,0.0014f,0.00

java - IDEA JetBrains IntelliJ - 'make' 上的编译错误,但使用 Maven 编译时很好,并且 IntelliJ 在类文件中没有报告错误

所以我在IntelliJ中有一个maven模块(模块-A)。我最近将一些类从它移到另一个新的maven模块(模块-B)并添加了一个依赖项。完成此操作后,我还修改了已移动类之一的方法的签名(现在在模块-B中)。我重新导入了pom,以便IntelliJ能够获取依赖项更改并确保受影响文件的所有Java导入再次正确。现在,当我尝试运行我的webapp(这取决于两个模块)时,我在模块A中的一个类中调用模块B中类的修改方法时遇到编译错误。错误消息基本上是说该方法不存在,但认为旧方法仍然存在!我单击“make”错误,它会将我带到模块A中调用修改后的方法的类中的行……奇怪的是,IntelliJ知道它在

Java 泛型 - Make Generic 扩展 2 个接口(interface)

你是如何做到这一点的:publicclassFrankenstein{}不做publicinterfaceWeirdoextendsIhuman,IMonster{}编辑为什么这不起作用?publicvoidmapThis(Class>key,Classvalue){}我收到编译器消息标记Class作为错误。 最佳答案 Reimeus已经指出,您在编辑中要求的内容是不可能的。我只是想详细说明一下原因。有人会认为您可以使用以下内容:publicvoidmapThis(Class>key,Classvalue){...}事实上,当我第一

Java:静态 transient 字段

我刚刚发现在Java中可以声明一个字段“静态transient”——编译器不会提示。这似乎没有任何用处,因为我们都知道静态字段没有序列化。但我想知道,“静态transient”字段是否真的有用? 最佳答案 不-你自己说过,静态字段没有序列化。编译器允许你这样做有点奇怪。 关于Java:静态transient字段,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4565653/

java - 如何解决 InaccessibleObjectException ("Unable to make {member} accessible: module {A} does not ' opens {package }' to {B}") on Java 9?

在Java9上运行应用程序时,此异常发生在多种场景中。某些库和框架(Spring、Hibernate、JAXB)特别容易出现这种情况。这是来自Javassist的示例:java.lang.reflect.InaccessibleObjectException:Unabletomakeprotectedfinaljava.lang.Classjava.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)throwsjava.lang.ClassFormatE

java - 如何处理 Findbugs "Non-transient non-serializable instance field in serializable class"?

考虑下面的类(class)。如果我对它运行Findbugs,它会在第5行但不在第7行给我一个错误(“可序列化类中的非transient非可序列化实例字段”)。1publicclassTestClassimplementsSerializable{23privatestaticfinallongserialVersionUID=1905162041950251407L;45privateSetmySet;//Findbugserror67privateHashSetmyOtherSet;89}这是正确的,因为java.util.Set从未在其层次结构中实现Serializable而jav

java自定义注解: make an attribute optional

我定义了自己的自定义注解@Target(value={ElementType.METHOD,ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)public@interfaceMyCustomAnnotation{ClassmyType();}如果有的话,我怎样才能使属性成为可选的 最佳答案 您可以provideadefaultvalue对于属性:@Target(value={ElementType.METHOD,ElementType.FIELD})@Retention(Re

java - SONAR 提示 Make the enclosure method "static"or remove this set

我的程序中有以下代码,在将其与Maven集成后,我正在运行SonarQube5以对其进行代码质量检查。但是,Sonar要求将封闭方法设为“静态”或删除此集合。方法是setApplicationContext。如何消除此错误?为什么会出现这个错误?publicclassSharedContextimplementsApplicationContextAware{publicstaticfinalStringREPORT_ENGINE_FACTORY="reportEngineFactory";privatestaticApplicationContextapplicationContex