Anonim bir sınıf iki (veya daha fazla) arabirimi nasıl uygulayabilir? Alternatif olarak, nasıl olabilir hem bir sınıf genişletmek ve bir arabirim uygulamak? Örneğin, iki arayüzü genişleten bir anonim sınıf nesnesi oluşturmak istiyorum:
// Java 10 "var" is used since I don't know how to specify its type
var lazilyInitializedFileNameSupplier = (new Supplier<String> implements AutoCloseable)() {
private String generatedFileName;
@Override
public String get() { // Generate file only once
if (generatedFileName == null) {
generatedFileName = generateFile();
}
return generatedFileName;
}
@Override
public void close() throws Exception { // Clean up
if (generatedFileName != null) {
// Delete the file if it was generated
generatedFileName = null;
}
}
};
Daha sonra bunu bir kaynakla deneme bloğunda AutoCloseable
tembel başlatılmış bir yardımcı program sınıfı olarak kullanabilirim:
try (lazilyInitializedFileNameSupplier) {
// Some complex logic that might or might not
// invoke the code that creates the file
if (checkIfNeedToProcessFile()) {
doSomething(lazilyInitializedFileNameSupplier.get());
}
if (checkIfStillNeedFile()) {
doSomethingElse(lazilyInitializedFileNameSupplier.get());
}
}
// By now we are sure that even if the file was generated, it doesn't exist anymore
Kesinlikle emin bu sınıf yönteminin dışında her yerde kullanılan ı kullanmak için gerekmez (ve de olmayacak çünkü ben bir iç sınıfı oluşturmak istemiyoruz olabilir yerel değişkenler kullanmak istediğinizi yöntemde o kudreti beyan olması var
) türü.