Использование «this» с именем класса

Я занимаюсь программированием на базе Android и узнал о намерениях, когда увидел конструктора, который, к моему обученному умению C #, казался напуганным. Вызов:

Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class); 

Оба параметра новы для меня. Как существует статическое «.this» от имени класса? Это вещь Java или Android? Я предполагаю, что это то же самое, что просто сказать «это», так как я в контексте CurrentActivity , но я не понимаю, как «это» можно отменить из самого имени класса. Также. «.class» выглядит так, как будто он используется для отражения, о котором я знаком на C #, но любое понимание этого также будет приветствоваться.

Благодарю.

Solutions Collecting From Web of "Использование «this» с именем класса"

Обычно вы можете использовать только this . Но иногда this ссылается на внутренний класс … так, например:

 Button button = (Button)findViewById(R.id.ticket_details_sell_ticket); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // it will be wrong to use only "this", because it would // reference the just created OnClickListener object Intent login = new Intent(ClassName.this, Login.class); startActivityForResult(login, LOGIN_REQUEST); } }); 

Один за раз:

Первая конструкция называется квалифицированной . Цель синтаксиса заключается в том, что вы находитесь во внутреннем классе (обычно это анонимный внутренний класс), и вы хотите ссылаться на this внешнего класса, а не на this (анонимный) внутренний класс. «Квалифицировать это» можно использовать только в контексте, где this было бы двусмысленно. Цитата JLS «Это ошибка времени компиляции, если выражение встречается в классе или интерфейсе, который не является внутренним классом класса T или T».

Вторая конструкция называется class literal – это способ ссылки на объект класса, который представляет этот тип. Его можно использовать в любом контексте.

Синтаксис «Classname.this» предназначен для внутренних классов. Если вы хотите обратиться к прилагаемому экземпляру типа «Outerclass», вы сделаете это как «Outerclass.this».

NextActivity.class – это просто объект класса, который описывает класс «NextActivity».

NextActivity.class в java означает typeof(NextActivity) в C #

ClassName.this используется для ссылки на текущий экземпляр внешнего класса из внутреннего класса.

 <ClassName>.this 

Используется во вложенных классах для обращения к текущему экземпляру охватывающего класса, так как ключевое слово this это относится к экземпляру класса гнезда.

 Открытый класс Siht {
     Класс NestedSiht {
         Void demoThis () {
             System.err.println (« this' is an instance of: " + this.getClass().getName()); System.err.println(" this' is an instance of: " + this.getClass().getName()); System.err.println("  this' is an instance of: " + this.getClass().getName()); System.err.println(" Siht.this" - это пример: "+
                             . Siht.this.getClass () GetName ());
         }
     } 

 void demoThis() { new java.lang.Object() { void demoThis() { System.err.println("`this' is an instance of: " + this.getClass().getName()); System.err.println("`Siht.this' is an instance of: " + Siht.this.getClass().getName()); } }.demoThis(); new NestedSiht().demoThis(); } public static void main(String [] args) { new Siht().demoThis(); } 

}