Các mã sau biên dịch tốt:biên dịch lỗi thể hiện của lớp thức
interface Flyer{ }
class Bat { }
public class App {
public static void main(String[] args) {
Bat b = new Bat();
if(b instanceof Flyer) System.out.println("b is a Bird");
}
}
Nếu chúng ta làm cho Bat
lớp final
, mã không biên dịch:
final class Bat { }
Nếu lớp thức thực hiện Flyer
, nó biên dịch tốt:
final class Bat implements Flyer { }
Bất kỳ một sự quan tâm để giải thích logic đằng sau điều này?
Sẽ không 'null instanceof X' trả về true bất kể" kiểu "của cá thể null? Tuy nhiên tôi có thể thấy rằng điều này sẽ rất dodgy để cho trình biên dịch chấp nhận rằng – Dici
@Dici Trên thực tế, ['null instanceof X' luôn luôn là' false'] (http://stackoverflow.com/questions/2950319/is-null- check-needed-before-calling-instanceof). – Tunaki
Ups ... xin lỗi, bạn nói đúng, tôi thậm chí còn sử dụng nó để viết tất cả các phương thức 'equals' của tôi. Tôi cần một giấc ngủ: D – Dici