
— Բարև, Ամիգո՛:
Հիմա ամենահետաքրքիրը։ Մենք կծանոթանանք Class դասի հետ, և մի քիչ էլ Reflection-ի հետ:
Ինչպես երևի թե արդեն հասկացար, Java-ում ամեն ինչ օբյեկտ է։ Իսկ ի՞նչ է պետք օբյեկտի համար։ Ի՞նչ կա յուրաքանչյուր օբյեկտի մեջ և որոշում է նրա բնույթը:
— Օբյեկտի դասը:
— Ճիշտ է։ Ամեն օբյեկտ ունի դաս։ Բայց վերադառնանք օբյեկտներին։ Որոշ օբյեկտները ամբողջությամբ պարունակում են որևէ էություն, իսկ մյուսները պարզապես օգնում են նրան կառավարել:
Վերջիններին կարելի է դասել FileOutputStream կամ Thread: Երբ ստեղծում ես Thread օբյեկտը, նոր թել չի ստեղծվում։ Այն ստեղծում է Java մեքենան start() մեթոդի կանչից հետո։ Այս օբյեկտը պարզապես օգնում է կառավարել պրոցեսը:
Այնպես էլ FileOutputStream: ֆայլը պահվում է սկավառակի վրա, և դրա պահեստավորումն ու հասանելիությունը կառավարում է ՕՀ-ն։ Բայց մենք կարող ենք գործ ունենալ դրա հետ File տիպի օբյեկտների միջոցով, կրկին Java մեքենայի օգնությամբ:
— Այո, դա ես արդեն հասկացել եմ:
— Ուրեմն, դասերի հետ փոխգործակցելու համար կա հատուկ դաս, որը կոչվում է — Class:
— Չէի կասկածում:
— Բայց այո։ Ամեն անգամ, երբ Java մեքենան ներբեռնում է հիշողության նոր դաս, նա ստեղծում է Class տիպի օբյեկտ, որով կարող է որոշակի ինֆորմացիա ստանալ ներբեռնված դասի մասին:
Յուրաքանչյուր դասին և օբյեկտին կցված է այդպիսի «դասի օբյեկտ»:
Օրինակ | Նկարագրություն |
---|---|
|
«Դասի օբյեկտ» ստացվելում Integer դասից: |
|
«Դասի օբյեկտ» ստացվելում int դասից: |
|
«Դասի օբյեկտ» ստացվելում String տիպի օբյեկտից: |
|
«Դասի օբյեկտ» ստացվելում Object տիպի օբյեկտից: |
— Վայ, ինչ հետաքրքիր է:
Բայց ինչու ես գրում clazz, և ոչ class?
— Հիշո՞ւմ ես, որ class բառը Java-ում հիմնական բառ է, և օգտագործել այն որպես փոփոխականի անուն չի կարելի:
— Այո, գիտեմ, գիտեմ։ Պարզապես մոռացա։
— Դու որևէ տեղ արդեն օգտագործե՞լ ես Class-ի օբյեկտը:
— Այո, մենք օգտագործել ենք, երբ գրել ենք equals մեթոդի մեր իրագործումը:
— Այո, կարելի է համեմատել — նույն դասերն արդյո՞ք ունեն օբյեկտները, եթե օգտագործել getClass() մեթոդը:
— Իսկ ինչ կարելի է անել այդ օբյեկտով?
— Դե, շատ բան:
Java կոդ | Նկարագրություն |
---|---|
|
Ստանալ դասի անունը։ |
|
Ստանալ դաս անունով։ |
|
Համեմատել դասերը օբյեկտների մեջ: |
— Հետաքրքիրը, բայց ոչ այնքան կուրտ, ինչպես ես մտածում էի:
— Ուզո՞ւմ ես, որ լինի կուրտ: Կա ևս մի բան՝ Reflection: Reflection - սա շատ կուրտ է:
— Իսկ ի՞նչ է Reflection:
— Reflection - սա դասի ունակությունն է ստանալու ինֆորմացիա իր մասին: Java-ում կան հատուկ դասեր, Field - դաշտ, Method - մեթոդ, ինչպես Class դասերի համար: Ե. այդ դեպքում Class տիպի օբյեկտը տալիս է հնարավորություն ստանալ ինֆորմացիա դասի մասին, այն դեպքում Field-ի մասին՝ դաշտի, իսկ Method-ի մասին՝ մեթոդի մասին։ Եվ ահա՝ ինչ կարելի է անել նրանց հետ.
Java կոդ | Նկարագրություն |
---|---|
|
Ստանում ենք «դասի օբյեկտները» List դասի ինտերֆեյսների համար: |
|
Ստանում ենք «դասի օբյեկտը» String դասի ծնող դասի համար: |
|
Ստանում ենք մեթոդների ցանկը, որոնք կան List դասում: |
|
Ստեղծում ենք նոր String դասի օբյեկտ: |
|
Ստանում ենք length մեթոդը String դասի համար, կանչում այն s տողի համար: |
— Վայ։ Սա իրականում կուրտ է։
— Ուրախ եմ, որ քեզ դուր եկավ։
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ