- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Tôi gặp lỗi SonarQube: "Chúng tôi thực sự khuyên bạn nên gọi khi kết thúc quá trình thực hiện phương pháp này super.finalize()
, trong trường hợp việc triển khai gốc cũng phải giải phóng một số tài nguyên hệ thống.”
nhưng tôi đã tìm thấy Object
Lớp không được triển khai hoàn thiện方法。
protected void Finalize() ném Có thể ném được { }
Vậy tại sao bạn cần gọisuper.finalize()
Vải len?
câu trả lời hay nhất
Điều này là không bắt buộc, đó là thành ngữ viết cuối cùng nên được tuân theo.
Nếu bất cứ lúc nào trong tương lai bạn cấu trúc lại mã của mình và lớp của bạn mở rộng thứ gì đó có thể có hoàn thiện
Phương pháp của các lớp khác, cách tiếp cận này sẽ ngăn chặn các lỗi lạ.
Thành ngữ là
thử {
// Làm bất cứ điều gì cuối cùng là
}
Cuối cùng {
super.finalize();
}
Điều này đảm bảo rằng trình hoàn thiện siêu lớp, nếu có một trình hoàn thiện không tầm thường, sẽ được gọi ngay cả khi một số ngoại lệ được ném ra (vì các ngoại lệ không bị bắt trong các trình hoàn thiện nên việc thực thi của chúng chỉ dừng lại).
chắc chắn:Tránh hoàn thiện. (Java hiệu quả của Joshua Bloch, tái bản lần 2, Mục 7).
Về java - Tại sao gọi super.finalize() được ưu tiên hơn khi ghi đè phương thức Finalize()? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/31985830/
问题比较Java,但是我想在Android中实现: 假设有 3 个或更多类相互扩展: class A { ... int color; ... } class B extend
我知道标题听起来有点奇怪,但这正是我愿意做的。简单解释:A类是B类的子类,B类也是C类的子类>. 现在,所有这些类都包含方法m()。在我的 A 类中,这是我唯一可以访问的类,因为其他类仅在运行时可用,
我有一个 UIViewController 类 A 和 B。 A 使用以下方式加载 B:[A.view addSubView B.view]。 B 有一个带有“后退”按钮的导航栏。我想在单击时返回到
我有以下(第三方)类结构。我们将调用第三方项目 ProjectSeriously,并注意我使用 System.out.println 代替其他复杂的功能(100 行代码) . class A {
在下面的代码中,我从 Game 扩展了 MyGame。我有两个问题: 我们是否需要为所有render()、dispose()、pause()调用super方法 和 resize(w,h)?很多人都没有
例如,假设我想在调用 super.viewDidLoad() 时跳过一级。所以我希望能够做这样的事情: override func viewDidLoad() { super.super.vi
public class Faculty extends Employee { public static void main(String[] args) { new Fac
假设我有: class Superclass { //fields... methodA() {...} methodB() {...} ... } class Subclass exte
这个问题在这里已经有了答案: Why is super.super.method(); not allowed in Java? (22 个答案) 关闭 9 年前。 我怀疑我想做的事情是否可行。我有
我有一个实现 Initializable 的类。 public abstract class ExampleClass implements Initializable { public vo
我想知道,我有这个大数组,是否可以只在内存中使用一次而不是每个线程一次?以 stackoverflow 上的标签为例。他们几乎从不改变,为什么不为他们留下一个内存点呢?甚至可能将该数组永久保存在内存中
假设这三个类具有这个简单的层次结构: class A { func foo() { print("A") } } class B: A { override fu
有没有办法在 TypeScript 中调用 super.super.methodName。我想避免调用super.methodName,但我想调用二祖的methodName方法。 谢谢。 最佳答案 T
这个问题已经有答案了: When do I use super()? (11 个回答) 已关闭 7 年前。 package Geometry; public abstract class Geomet
我必须执行and()在我的实现 Predicate 的业务对象上. 出现问题的代码是 and() 行调用: Predicate predicate = new M
我有一个实现接口(interface)的抽象父类(super class): public abstract class FooMatrix implements Matrix { publi
我有四个 UIView:viewA 是 Root View ,它有 viewB 作为它的 subview 。 viewB 将 viewC 作为其 subview ,而 viewC 将 viewD 作为
有什么区别: class Child(SomeBaseClass): def __init__(self): super(Child, self).__init__() 和:
我有一个通用接口(interface) interface ListList extends List> .由于某些原因,我无法转换 ListList至 List> .有什么方法可以做到吗?为什么它不
我想调用带有两个参数的父类(super class)的构造函数,所以我调用了 super(arguments),但是编译器说: “类 Person 中的构造函数 Person 不能应用于给定类型; 要
Tôi là một lập trình viên xuất sắc, rất giỏi!