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


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.