একজন বেনাম শ্রেণি কীভাবে দুটি (বা আরও) ইন্টারফেস প্রয়োগ করতে পারে? বিকল্পভাবে, এটি উভয়ই কীভাবে একটি শ্রেণি বাড়িয়ে এবং একটি ইন্টারফেস প্রয়োগ করতে পারে ? উদাহরণস্বরূপ, আমি বেনাম শ্রেণীর একটি বস্তু তৈরি করতে চাই যা দুটি ইন্টারফেস প্রসারিত করে:
// 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;
}
}
};
তারপরে আমি এটিকে AutoCloseable
অলস-সূচনাযুক্ত ইউটিলিটি শ্রেণি হিসাবে একটি-চেষ্টা-সংস্থানসমূহ ব্লকে ব্যবহার করতে পারি :
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
আমি কোনও অভ্যন্তরীণ শ্রেণি তৈরি করতে চাই না কারণ আমি নিশ্চিত যে এই ক্লাসটি যে পদ্ধতিতে আমার এটি ব্যবহার করতে হবে তা বাদ দিয়ে কোথাও ব্যবহার করা হবে না (এবং আমি সেই পদ্ধতিতে ঘোষিত স্থানীয় ভেরিয়েবলগুলিও ব্যবহার করতে চাইব var
টাইপ হতে হবে )।