为一个 class 分配相同的内存或更改 java 中的最终变量
allocate same memory for one class or changing final variable in java
我在 android 中有一个 class (java) 我被迫每秒创建一个 class (new className() ) 因为变量是最终的。这会占用大量内存。
我无法更改 class 因为它是在库中实现的
我想要:
当第一次创建 className 和 OS 分配一个内存位置时,当我再次创建我的 class 时,它会替换到第一次分配的那个位置。要么
我如何更改最终变量?
您可以在 class 上编写一个 reset()
方法,它将对象的所有字段重置为初始状态。
当您想创建一个新对象时,不创建新对象,调用旧对象 reset()
并重新使用它。
单例 Class 示例:
public class SomeClass {
private static LibraryClass libraryClass;
public static LibraryClass getInstance() {
if(libraryClass == null) {
libraryClass = new LibraryClass();
}
return libraryClass;
}
}
然后你可以调用它:LibraryClass libraryClass = SomeClass.getInstance();
我解决了我的问题:
通过此代码:
Field modifierslatitude = className.class.getDeclaredField("latitude");
modifierslatitude.setAccessible(true);
modifierslatitude.set(classNameObjectThatFirstCreate, location.getLatitude() + MainActivity.y * 0.0002);
事实上,我一次又一次地更改了 final 变量而没有创建新的 class
我在 android 中有一个 class (java) 我被迫每秒创建一个 class (new className() ) 因为变量是最终的。这会占用大量内存。 我无法更改 class 因为它是在库中实现的
我想要: 当第一次创建 className 和 OS 分配一个内存位置时,当我再次创建我的 class 时,它会替换到第一次分配的那个位置。要么 我如何更改最终变量?
您可以在 class 上编写一个 reset()
方法,它将对象的所有字段重置为初始状态。
当您想创建一个新对象时,不创建新对象,调用旧对象 reset()
并重新使用它。
单例 Class 示例:
public class SomeClass {
private static LibraryClass libraryClass;
public static LibraryClass getInstance() {
if(libraryClass == null) {
libraryClass = new LibraryClass();
}
return libraryClass;
}
}
然后你可以调用它:LibraryClass libraryClass = SomeClass.getInstance();
我解决了我的问题:
通过此代码:
Field modifierslatitude = className.class.getDeclaredField("latitude");
modifierslatitude.setAccessible(true);
modifierslatitude.set(classNameObjectThatFirstCreate, location.getLatitude() + MainActivity.y * 0.0002);
事实上,我一次又一次地更改了 final 变量而没有创建新的 class