জাভা বেনাম শ্রেণীর থেকে "এটি" অ্যাক্সেস করুন


143

নিম্নলিখিত কোড দেওয়া:

public interface Selectable {
  public void select();
}

public class Container implements Selectable {
  public void select() {
  ...
  }
  public void createAnonymousClass() {
    Selectable s = new Selectable() {
      public void select() {
        //see comment below.
      }
    };
  }
}

আমি Container.select()আমার বেনাম শ্রেণীর select()পদ্ধতির মধ্যে থেকে অ্যাক্সেস করতে চাই । যাইহোক, this.select()আবার বেনামে ক্লাস ডাকবে 'select() পদ্ধতি ।

আমার পরামর্শটি হ'ল:

ধারক হিসাবে একটি ক্ষেত্র প্রবর্তন করুন, যেমন

private Container self = this;

এখন আমি Container.select()কল করে অ্যাক্সেস করতে পারিself.select() বেনাম শ্রেণীর মধ্যে থেকে ।

এটি কি যুক্তিসঙ্গত উপায়? নাকি এর চেয়ে ভাল উপায় আছে?

উত্তর:


268
Container.this.select();

3
আমি জানতাম না thisকীওয়ার্ডগুলিকেও যেমন পদ্ধতি এবং বৈশিষ্ট্যগুলি পার্থক্য করতে পারে তেমন পার্থক্য করা যায়। +1
— লোগো_ লেখক

এটি এখানে লক্ষ করা উচিত যে আপনি ঠিক Containerক্লাসটি নির্দিষ্ট করতে হবে । এর পূর্বপুরুষদের কোনও গ্রহণ করা হবে না।
— velis

42

আপনি Container.this.select()অভ্যন্তরীণ ক্লাস থেকে আলাদা লিখতে পারেন!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.