ජාවා හි ස්ථිතික පන්ති


959

static classජාවා වල වගේ දෙයක් තියෙනවද?

එවැනි පංතියක තේරුම කුමක්ද? ස්ථිතික පන්තියේ සියලුම ක්‍රම ද අවශ්‍ය විය staticයුතුද?

පංතියක සියලු ස්ථිතික ක්‍රම තිබේ නම්, පන්තියද ස්ථිතික විය යුතුද?

ස්ථිතික පන්ති මොනවාද?


4
ගැන උනන්දු විය හැකිය stackoverflow.com/questions/3584113/java-static-class
ඉෂ්තාර්

ස්ථිතික පංති මූලික වශයෙන් භාවිතා කරනුයේ පන්ති කාණ්ඩගත කිරීම සඳහා ය.
රොකිං දේව්

Answers:


858

ජාවාහි ස්ථිතික කැදැලි පන්ති ඇති නමුත් ඔබ ඉහළ මට්ටමේ ස්ථිතික පන්තියක් සොයන බවක් පෙනේ. ඉහළ මට්ටමේ පන්ති ස්ථිතිකයක් සෑදීමට ජාවාට ක්‍රමයක් නැත, නමුත් ඔබට මේ වගේ ස්ථිතික පන්තියක් අනුකරණය කළ හැකිය:

  • ඔබේ පංතිය ප්‍රකාශ කරන්න final- ස්ථිතික පන්තියක් දීර් ing කිරීම තේරුමක් නැති බැවින් පන්තියේ දිගුව වළක්වයි
  • ඉදිකිරීම්කරු සාදන්න private- ස්ථිතික පංතියක් ක්ෂණික කිරීම තේරුමක් නැති බැවින් ග්‍රාහක කේතය මඟින් ක්ෂණිකව වැළැක්වීම
  • පංතියේ සියලුම සාමාජිකයන් හා කාර්යයන් සාදන්න static- පංතිය ක්ෂණිකව කළ නොහැකි බැවින් නිදර්ශන ක්‍රම ඇමතීමට හෝ නිදර්ශන ක්ෂේත්‍රවලට ප්‍රවේශ විය නොහැක
  • නිදසුනක් (ස්ථිතික නොවන) සාමාජිකයෙකු ප්‍රකාශ කිරීමෙන් සම්පාදකයා ඔබව වළක්වන්නේ නැති බව සලකන්න. ගැටළුව පෙන්වන්නේ ඔබ උදාහරණ සාමාජිකයා ඇමතීමට උත්සාහ කළහොත් පමණි

ඉහත යෝජනා සඳහා සරල උදාහරණයක්:

public class TestMyStaticClass {
     public static void main(String []args){
        MyStaticClass.setMyStaticMember(5);
        System.out.println("Static value: " + MyStaticClass.getMyStaticMember());
        System.out.println("Value squared: " + MyStaticClass.squareMyStaticMember());
        // MyStaticClass x = new MyStaticClass(); // results in compile time error
     }
}

// A top-level Java class mimicking static class behavior
public final class MyStaticClass {
    private MyStaticClass () { // private constructor
        myStaticMember = 1;
    }
    private static int myStaticMember;
    public static void setMyStaticMember(int val) {
        myStaticMember = val;
    }
    public static int getMyStaticMember() {
        return myStaticMember;
    }
    public static int squareMyStaticMember() {
        return myStaticMember * myStaticMember;
    }
}

ස්ථිතික පන්ති මොනවාද? ස්ථිතික පංතියක හොඳ භාවිතයක් වන්නේ ක්ෂණික කිරීම අර්ථවත් නොවන එක්-වර්‍ග, උපයෝගීතා සහ / හෝ පුස්තකාල පන්ති නිර්වචනය කිරීමයි. ගණිත පන්තිය PI සහ E වැනි ගණිතමය නියතයන් අඩංගු වන අතර ගණිතමය ගණනය කිරීම් සපයයි. එවැනි අවස්ථාවකදී ක්ෂණිකව ඉල්ලා සිටීම අනවශ්‍ය හා ව්‍යාකූල වනු ඇත. බලන්න Mathපන්තිය හා මූල කේතය . එය finalසහ එහි සියලුම සාමාජිකයන් සිටින බව සැලකිල්ලට ගන්න static. ඉහළ මට්ටමේ පන්ති ප්‍රකාශයට පත් කිරීමට ජාවා ඉඩ දුන්නේ නම් staticගණිත පන්තිය ස්ථිතික වනු ඇත.


36
ක්‍රම Fooපමණක් ඇති පන්තියක් staticසමාන නොවේstatic class Foo
ක්‍රේග්

12
VEvorlor: පන්තියක් අවසාන වශයෙන් ප්‍රකාශයට පත් කළ හොත් එහි ක්‍රම ස්වයංක්‍රීයව (effectively ලදායී ලෙස) අවසන් වේ. මෙයට හේතුව අවසාන පංතිය උප වර්ගීකරණය කළ නොහැකි අතර එමඟින් එහි ක්‍රම ඉක්මවා යා නොහැක (එනම්, අවසාන වශයෙන් are ලදායී වේ). docs.oracle.com/javase/tutorial/java/IandI/final.html
jwayne

30
මෙම පිළිතුර සමහර විට OP අදහස් කළ දෙය ආමන්ත්‍රණය කරයි, නමුත් එය (දැනට) ජාවා ස්ථිතික පංති පැහැදිලි නොකරයි, එම නිසා ප්‍රශ්නයට කිසිසේත් පිළිතුරු නොදේ! ජාවා හි ස්ථිතික පංතියක් යනු කුමක්දැයි වටහා ගැනීමට උත්සාහ කරන අයට මෙය ඉතා නරක ය.
ටොම්

12
@ ජේබෝයි: ජාවා හි "ස්ථිතික පංතිය" වැනි දෙයක් තිබේ, එය ප්‍රශ්නය වන්නේ එයයි, නමුත් මෙම පිළිතුර කිසිසේත් පැහැදිලි නොකරයි. නමුත් වන වේ - ඒ වෙනුවට, එය ඇති පිළිතුර "ස්ථිතික" පන්ති පවසා ඇති දේ ජාවා අනුකරනය කරන ආකාරය විස්තර නොවන ජාවා හි දී "ස්ථිතික" පන්ති දේ! (සමහර විට එය වෙනත් භාෂාවකින් (ස්ථිතික පංතියක්) ලෙස හැඳින්වේ, නමුත් ජාවා ස්ථිතික පංති ගැන ඉගෙන ගැනීමට මෙහි පැමිණෙන පුද්ගලයින් නොමඟ යවා ව්‍යාකූල වනු ඇත.)
ටොම්

6
පුද්ගලික MyStaticClass () private // පුද්ගලික ඉදිකිරීම්කරු myStaticMember = 1; ඉදිකිරීම්කරු කැඳවනු නොලබන බැවින්} කිසිසේත්ම බලපෑමක් ඇති නොකරනු ඇත. නමුත් කාරණය මෙය නොවේ. ජාවාහි ස්ථිතික අභ්‍යන්තර පංතිවල උපයෝගීතාව සහ ඒවායේ උපයෝගීතාව හෝ අමතර වටිනාකම පිළිබඳව මම තවමත් ව්‍යාකූල වී සිටිමි.
මෝල්ඩෝවන්

318

හොඳයි, ජාවා සතුව “ස්ථිතික කැදැලි පන්ති” ඇත, නමුත් ඒවා ඔබ සී # හි ස්ථිතික පන්ති වලට සමාන නොවේ. ස්ථිතික කැදැලි පන්තියක් යනු බාහිර පන්තියේ නිදසුනක් ගැන ව්‍යංගයෙන් සඳහනක් නැති එකකි.

ස්ථිතික කැදැලි පන්තිවලට නිදර්ශන ක්‍රම සහ ස්ථිතික ක්‍රම තිබිය හැකිය.

ජාවා හි ඉහළ මට්ටමේ ස්ථිතික පන්තියක් වැනි දෙයක් නොමැත.


13
ජාවා හි ස්ථිතික කැදැලි පන්තිය නිදර්ශන ක්‍රමවලට ඉඩ දෙන්නේ ඇයි? එවැනි පංතියක නිදර්ශන ක්‍රමයක් භාවිතා කරන්නේ කුමක් ද?
ගීක්

19
Ee ගීක්: ඔබ මගේ පිළිතුර කියෙව්වාද? දෙවන වාක්‍යය ප්‍රවේශමෙන් කියවන්න. ඇයි ඔබ ඇත නොහැකි ස්ථිතික පන්ති උදාහරණයක් ක්රම ඇති කිරීමට හැකි විය අවශ්ය ද? ඔබට ඒවායින් අවස්ථා නිර්මාණය කළ හැකිය.
ජෝන් ස්කීට්

17
Ee ගීක්: ඔව්, එය සම්පූර්ණයෙන්ම අවසර ඇත. ස්ථිතික පන්ති උපයෝගිතා පන්ති බව ඔබේ “අවබෝධය” මූලික වශයෙන් වැරදිය. ජාවාහි ස්ථිතික පංති කිසිසේත්ම අදහස් කරන්නේ එය නොවේ.
ජෝන් ස්කීට්

14
Ee ගීක්: ඔව්. මගේ පිළිතුරේ හරියටම ලියා ඇති පරිදි: "ස්ථිතික කැදැලි පන්තියක් යනු බාහිර පන්තියේ නිදසුනක් ගැන ව්‍යංගයෙන් සඳහනක් නැති එකකි."
ජෝන් ස්කීට්

6
H කුරාම්අලි: ඔබ අදහස් කරන්නේ ව්‍යංගයෙන්ද ? ඔවුන් නිසැකව නෑ සුවිශේෂව ස්ථිතික, ඔබ ඉඟි පද භාවිතා නොකරන බව ලබා දී staticඔවුන් ප්රකාශ කරන විට. ඒවා ව්‍යංගයෙන් ස්ථිතික වන්නේ ඒවා තැනීම සඳහා ඔබට වෙනත් කිසිවක් ගැන සඳහනක් අවශ්‍ය නොවන බැවිනි. පුද්ගලිකව මම ස්ථිතික / ස්ථිතික නොවන පාරිභාෂිතය කැදැලි පන්ති සඳහා තරමක් අමුතු දෙයක් ලෙස සලකමි ... හැසිරීම යනු කුමක්ද යන්න ගැන කතා කිරීම සරල වනු ඇතැයි මම සිතමි.
ජෝන් ස්කීට්

160

ස්ථිතික කැදැලි පංතියක් ඇත , මෙම [ස්ථිතික කැදැලි] පන්තියට ක්ෂණිකව ක්‍රියාත්මක වීම සඳහා සංවෘත පන්තියේ උදාහරණයක් අවශ්‍ය නොවේ.

මෙම පංති [ස්ථිතික කැදැල්ලට] ප්‍රවේශ විය හැක්කේ සංවෘත පන්තියේ ස්ථිතික සාමාජිකයින්ට පමණි [එයට සංවෘත පන්තියේ අවස්ථා පිළිබඳ සඳහනක් නොමැති බැවින් ...]

කේත නියැදිය:

public class Test { 
  class A { } 
  static class B { }
  public static void main(String[] args) { 
    /*will fail - compilation error, you need an instance of Test to instantiate A*/
    A a = new A(); 
    /*will compile successfully, not instance of Test is needed to instantiate B */
    B b = new B(); 
  }
}

1
එබැවින් ඒවා ස්ථිතික කිරීම සඳහා අභ්‍යන්තර ස්ථිතික පංති භාවිතා කළ හැකි යැයි අපට පැවසිය හැකිද?
මෝල්ඩෝවන්

@moldovean අපි ස්ථිතික සන්දර්භයකින් (ප්‍රධාන වැනි) ක්ෂණික කිරීම සඳහා අභ්‍යන්තර ස්ථිතික පන්ති භාවිතා කරමු . දෘශ්‍යතාවයට එය සම්බන්ධයක් ඇතැයි මම නොසිතමි.
මයිකල් ඩෝර්ස්ට්

2
ol මෝල්ඩෝවන් ස්ථිතික / ස්ථිතික නොවන බව දෘශ්‍යතාවයට විකලාංග වේ. ස්ථිතික හෝ ස්ථිතික නොවන ඕනෑම ආකාරයක දෘශ්‍යතාවයක් ඔබට තිබිය හැකිය. කාරණය වන්නේ, අභ්‍යන්තරය නිර්මාණය කිරීම සඳහා, සංවෘත පන්තියේ උදාහරණයක් ඔබට අවශ්‍යද?
අමිත්

104

ඔව්, ජාවා වල ස්ථිතික කැදැලි පන්තියක් තිබේ. ඔබ කැදැලි පන්තියේ ස්ථිතිකයක් ප්‍රකාශ කරන විට, එය ස්වයංක්‍රීයව තනිවම සිටින පන්තියක් බවට පත්වන අතර එය අයත් වන බාහිර පන්තිය ක්ෂණිකව නොපෙන්වා ක්ෂණිකව ක්‍රියාත්මක කළ හැකිය.

උදාහරණයක්:

public class A
{

 public static class B
 {
 }
}

class Bස්ථිතික ලෙස ප්‍රකාශයට පත් කර ඇති නිසා ඔබට පැහැදිලිවම ක්ෂණිකව දැක්විය හැකිය:

B b = new B();

class Bඑය තනිවම සිටීමට ස්ථිතික ලෙස ප්‍රකාශයට පත් නොකළේ නම් , නිදසුනක් වස්තු ඇමතුමක් මේ වගේ වනු ඇත:

A a= new A();
B b = a.new B();

7
ඔබ නිතිපතා වැනි එක්සත් ජාතීන්ගේ සංවිධානය-ස්ථිතික පන්ති instantiate හැකි බව සටහන් B b = new B();ඔබ පන්තියේ සිට එය instantiate කිරීමට උත්සාහ කරන්නේ නම් Aතමන්.
මුහම්මද් රීෆාට්

33

සාමාජිකයෙකු තුළ සාමාජිකයෙකු classලෙස ප්‍රකාශ කළ විට කුමක් සිදුවේද static..? ක්ෂණිකව තොරව සාමාජිකයින්ට ප්‍රවේශ විය හැකි බව class. එබැවින් බාහිර පන්තිය (ඉහළ මට්ටමේ පන්තිය) සෑදීම staticඅර්ථයක් නැත. එබැවින් එයට අවසර නැත.

නමුත් ඔබට අභ්‍යන්තර පන්ති ස්ථිතික ලෙස සැකසිය හැකිය (එය ඉහළ මට්ටමේ පන්තියේ සාමාජිකයෙකු බැවින්). එවිට ඉහළ පෙළ පන්තිය ක්ෂණිකව නොගෙන එම පන්තියට ප්‍රවේශ විය හැකිය. පහත උදාහරණය සලකා බලන්න.

public class A {
    public static class B {

    }
}

දැන්, වෙනත් පංතියක් තුළ C, පන්තියේ Bනිදසුනක් නොකර පන්තියට ප්‍රවේශ විය හැකිය A.

public class C {
    A.B ab = new A.B();
}

staticපන්තිවලට non-staticසාමාජිකයන් ද සිටිය හැකිය . ස්ථිතික වන්නේ පන්තියට පමණි.

නමුත් staticමූලික පදය පන්තියෙන් ඉවත් කළ හොත්, Bනිදසුනක් නොමැතිව එය කෙලින්ම ප්‍රවේශ කළ නොහැක A.

public class C {
    A a = new A();
    A.B ab = a. new B();
}

නමුත් අපට අභ්‍යන්තර පන්තියක් staticතුළ සාමාජිකයන් සිටිය නොහැක non-static.


අපට ස්ථිතික පංතියක් ක්ෂණිකව ක්‍රියාත්මක කළ හැකිද?
සුපුන් විජරත්න

6
වෙනත් භාෂාවල මෙන් staticනොව, ජාවාහි ඇත්තේ එක් අර්ථයක් පමණි. යම් දෙයක් staticපන්තියක තිබේ නම් එයින් අදහස් කරන්නේ එම පන්තිය ක්ෂණිකව නොගෙන එම දෙයට ප්‍රවේශ විය හැකි බවයි. එය සිදුවීම් නිර්මාණය කිරීම ගැන කිසිවක් නොකියයි ..
රමේෂ්-එක්ස්

කණගාටුයි. මේ අවස්ථාවේ දී මට ස්තූතියි රමේෂ්-එක්ස් යැයි පැවසීමෙන් වැළකී සිටිය නොහැක! ස්ථිතික අභ්‍යන්තර පංති සහ අභ්‍යන්තර පංති ගැන මා කල්පනා කළ සෑම දෙයක්ම පාහේ ඔබ ආවරණය කළේය.
මෝල්ඩෝවන්

ඔබට 'අභ්‍යන්තර පන්ති ස්ථිතික ලෙස සැකසිය නොහැක'. මෙය කොන්දේසිවලට පටහැනිය . කැදැලි පන්තියක් අභ්‍යන්තර හෝ ස්ථිතික වේ.
ලෝර්න් හි මාක්විස්

14

ජාවාහි පන්තියක් ස්ථිතික විය හැකිද?

පිළිතුර ඔව් , අපට ජාවාහි ස්ථිතික පන්තියක් තිබිය හැකිය. ජාවා හි, අපට ස්ථිතික නිදර්ශන විචල්‍යයන් මෙන්ම ස්ථිතික ක්‍රම සහ ස්ථිතික වාරණඇත . පංති ද ජාවාහි ස්ථිතික කළ හැකිය.

ජාවා වලදී අපට ඉහළ මට්ටමේ (පිටත) පන්තිය ස්ථිතික කළ නොහැක. ස්ථිතික විය හැක්කේ කැදැලි පන්ති පමණි.

ස්ථිතික කැදැලි පන්තිය එදිරිව ස්ථිතික නොවන කැදැලි පන්තිය

1) නෙස්ටඩ් ස්ථිතික පන්තියට පිටත පන්තිය පිළිබඳ සඳහනක් අවශ්‍ය නොවේ, නමුත් ස්ථිතික නොවන කැදැලි පන්තියට හෝ අභ්‍යන්තර පන්තියට පිටත පන්ති යොමු කිරීම අවශ්‍ය වේ.

2) අභ්‍යන්තර පන්තියට (හෝ ස්ථිතික නොවන කැදැලි පන්තියට) පිටත පන්තියේ ස්ථිතික හා ස්ථිතික නොවන සාමාජිකයන්ට ප්‍රවේශ විය හැකිය. ස්ථිතික පන්තියකට පිටත පන්තියේ ස්ථිතික නොවන සාමාජිකයින්ට ප්‍රවේශ විය නොහැක. එයට ප්‍රවේශ විය හැක්කේ පිටත පන්තියේ ස්ථිතික සාමාජිකයින්ට පමණි.

මෙතැනින් බලන්න: https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html


අභ්‍යන්තර 'ස්ථිතික නොවන' පන්තිවලට ස්ථිතික ක්ෂේත්‍ර හෝ ක්‍රම ප්‍රකාශ කළ නොහැක
කැට්

12

මෙය "ස්ථිතික පංතියේ ජාවා" සඳහා ගූගල්හි ඉහළම ප්‍රති result ලය වන අතර හොඳම පිළිතුර මෙහි නොමැති නිසා මම එය එකතු කරමි යැයි සිතුවෙමි. මම OP හි ප්‍රශ්නය අර්ථ නිරූපණය කරන්නේ C # හි ස්ථිතික පංති සම්බන්ධයෙන් වන අතර ඒවා ජාවා ලෝකයේ තනි බොත්තම් ලෙස හැඳින්වේ. නොදන්නා අය සඳහා, C # හි "ස්ථිතික" මූල පදය පන්ති ප්‍රකාශනයකට යෙදිය හැකි අතර එයින් අදහස් කරන්නේ එහි ප්‍රති ing ලයක් ලෙස ඇති පන්තිය කිසි විටෙකත් ක්ෂණිකව කළ නොහැකි බවයි.

ජොෂුවා බ්ලොච් විසින් රචිත "ective ලදායී ජාවා - දෙවන සංස්කරණය" වෙතින් උපුටා ගැනීමකි (ලබා ගත හැකි හොඳම ජාවා විලාසිතාවේ මාර්ගෝපදේශයක් ලෙස පුළුල් ලෙස සැලකේ):

1.5 නිකුතුව වන විට, තනි බොත්තම් ක්‍රියාත්මක කිරීම සඳහා තුන්වන ප්‍රවේශයක් ඇත. එක් මූලද්‍රව්‍යයක් සමඟ එනමම් වර්ගයක් සාදන්න:

// Enum singleton - the preferred approach
public enum Elvis {
    INSTANCE;
    public void leaveTheBuilding() { ... }
}

මෙම ප්‍රවේශය වඩාත් සංක්ෂිප්ත, අනුක්‍රමිකකරණ යන්ත්‍රෝපකරණ නොමිලයේ ලබා දීම සහ නවීන අනුක්‍රමිකකරණය හෝ පරාවර්තන ප්‍රහාර හමුවේ පවා බහු වාරිකකරණයට එරෙහිව යකඩ ආවරණ සහතිකයක් ලබා දීම හැර, පොදු ක්ෂේත්‍ර ප්‍රවේශයට ක්‍රියාකාරීව සමාන වේ. මෙම ප්‍රවේශය තවමත් පුළුල් ලෙස අනුගමනය කර නොමැති අතර, තනි මූලද්‍රව්‍යයක් වන එනුම් වර්ගය තනි ඒකකය ක්‍රියාත්මක කිරීමට හොඳම ක්‍රමයයි. (අවධාරණය කර්තෘගේ)

බ්ලොච්, ජෝෂුවා (2008-05-08). Java ලදායී ජාවා (ජාවා ශ්‍රේණි) (පි. 18). පියර්සන් අධ්‍යාපනය.

මම හිතන්නේ ක්‍රියාත්මක කිරීම සහ සාධාරණීකරණය කිරීම ස්වයං පැහැදිලි කිරීමක්.


6
සිංගල්ටන් එකක් ක්‍රියාත්මක කිරීමට හොඳ ක්‍රමයක්. අවාසනාවකට මෙන්, ප්‍රශ්නය සිංගල්ටන් ගැන නොවේ, එය ස්ථිතික පන්ති ගැන ය
ඩේවිඩ් එස්එන්

1
ජාවාහි "ස්ථිතික" මූල පදය පිළිබඳ තරමක් අද්විතීය අර්ථකථනයක් ඇත. OP පැමිණෙන්නේ C # වලින් බව පෙනේ, එහිදී "ස්ථිතික පන්තිය" යනු ජාවා හි තනි පුද්ගලයෙකුට සමාන වේ. ප්‍රශ්නයේ මෙම අර්ථ නිරූපණය පැහැදිලි කිරීම සඳහා මම මගේ පිළිතුර යාවත්කාලීන කර ඇත.
බෙනට් හියුබර්

1
AC # ස්ථිතික පන්තිය සිංගල්ටන් නොවේ. සිංගල්ටන් නිදසුනක් යනු වස්තුවක් වන අතර අතුරු මුහුණතක් ක්‍රියාත්මක කළ හැකි අතර එයින් අදහස් කරන්නේ පරායත්ත එන්නත් සඳහා සහභාගී විය හැකි අතර සමච්චල් කළ හැකි බවයි. AC # ස්ථිතික පන්තියට අතුරු මුහුණතක් ක්‍රියාත්මක කිරීමට හෝ කිසිදු ආකාරයකින් එන්නත් කිරීමට නොහැකි අතර එය C ශ්‍රිත සමූහයකට වඩා සමීප වන අතර ඇත්ත වශයෙන්ම දිගු කිරීමේ ක්‍රම වලට ඉඩ දෙයි.
Novaterata

7

පිටත පන්ති ස්ථිතික විය නොහැක, නමුත් කැදැලි / අභ්‍යන්තර පන්ති විය හැකිය. බාහිර පංතියේ නිදසුනක් නිර්මාණය නොකර කූඩු / අභ්‍යන්තර පන්තිය භාවිතා කිරීමට එය මූලික වශයෙන් උපකාරී වේ.



3

සරළව කිවහොත්, ජාවා විසින් පංතියක් ස්ථිතික යැයි ප්‍රකාශ කිරීම අභ්‍යන්තර පංති සඳහා පමණක් නොව ඉහළ මට්ටමේ පන්ති සඳහා නොවේ.

ඉහළ මට්ටමේ පන්ති: ජාවා ව්‍යාපෘතියකට සෑම ජාවා ප්‍රභව ගොනුවකම ඉහළ මට්ටමේ පන්ති එකකට වඩා අඩංගු විය හැකිය, එක් පන්තියක් ගොනු නාමයෙන් නම් කර ඇත. ඉහළ මට්ටමේ පන්ති ඉදිරිපිට පොදු, වියුක්ත හා අවසාන වශයෙන් අවසර දී ඇත්තේ විකල්ප තුනක් හෝ වචන තුනක් පමණි.

අභ්‍යන්තර පංති: ඉහළ පෙළේ පන්තියක ඇති පන්ති අභ්‍යන්තර පන්ති ලෙස හැඳින්වේ. අභ්‍යන්තර පන්ති ස්ථිතික විය හැකිය . අභ්‍යන්තර පංති ස්ථිතික බවට පත් කිරීමේ අදහස නම්, ඉහළ පෙළේ පන්තියේ වස්තුව ක්ෂණිකව නොගෙන අභ්‍යන්තර පංතිවල වස්තූන් ක්ෂණිකව ස්ථාපනය කිරීමේ වාසිය ලබා ගැනීමයි. ඉහළ මට්ටමේ පන්තියක ස්ථිතික ක්‍රම සහ විචල්‍යයන් ක්‍රියා කරන ආකාරයට මෙය හරියටම සමාන වේ.

එබැවින් ජාවා අභ්‍යන්තර පන්ති මට්ටමින් (කැදැලි පන්තිවල) ස්ථිතික පන්ති සඳහා සහය දක්වයි

ඉහළ මට්ටමේ පන්තිවල ස්ථිතික පන්ති සඳහා ජාවා සහාය නොදක්වයි.

ජාවා හි ස්ථිතික පංති පිළිබඳ මූලික අවබෝධය සඳහා වන ප්‍රශ්නයට මෙය සරල විසඳුමක් ලබා දෙනු ඇතැයි මම බලාපොරොත්තු වෙමි.



0

පංති හා සම්බන්ධ ස්ථිතික ක්‍රම ජාවා සතුව ඇත (උදා: java.lang.Math සතුව ඇත්තේ ස්ථිතික ක්‍රම පමණි), නමුත් පන්තියම ස්ථිතික නොවේ.


0

අභ්‍යන්තර පංතියක් නම් මිස ඔබට ස්ථිතික මූල පදය පන්තියක් සමඟ භාවිතා කළ නොහැක. ස්ථිතික අභ්‍යන්තර පන්තිය යනු බාහිර පන්තියේ ස්ථිතික සාමාජිකයෙකු වන කැදැලි පන්තියකි. වෙනත් ස්ථිතික සාමාජිකයන් භාවිතා කරමින් බාහිර පන්තිය ක්ෂණිකව නොගෙන එයට ප්‍රවේශ විය හැකිය. ස්ථිතික සාමාජිකයන් සේම, ස්ථිතික කැදැලි පන්තියකට බාහිර පන්තියේ නිදර්ශන විචල්‍යයන් හා ක්‍රම වෙත ප්‍රවේශය නොමැත.

public class Outer {
   static class Nested_Demo {
      public void my_method() {
          System.out.println("This is my nested class");
      }
   }
public static void main(String args[]) {
      Outer.Nested_Demo nested = new Outer.Nested_Demo();
      nested.my_method();
   }
}

ඔබට කැදැලි පන්තියක් staticමිස පංතියක් සමඟ මූලික පදය භාවිතා කළ නොහැක . 'ස්ථිතික අභ්‍යන්තරය' යනු පරස්පර විරෝධීතාවයකි .
ලෝර්න් හි මාක්විස්

0

ස්ථිතික ක්‍රමයක් යනු මහජනතාව මෙන් නොව පන්තියේ වස්තුවක් නිර්මාණය නොකර එයට ප්‍රවේශ විය හැකි බවයි:

public class MyClass {
   // Static method
   static void myStaticMethod() {
      System.out.println("Static methods can be called without creating objects");
   }

  // Public method
  public void myPublicMethod() {
      System.out.println("Public methods must be called by creating objects");
   }

  // Main method
  public static void main(String[ ] args) {
      myStaticMethod(); // Call the static method
    // myPublicMethod(); This would output an error

    MyClass myObj = new MyClass(); // Create an object of MyClass
    myObj.myPublicMethod(); // Call the public method
  }
}

ප්‍රශ්නයට පිළිතුරු සපයන්නේ නැත.
ලෝර්න් හි මාක්විස්

-1

සියලු හොඳ පිළිතුරු, නමුත් ස්ථිතික සාධක ක්‍රම සඳහා ස්ථිතික අභ්‍යන්තර පන්තියේ ටොන් ගණනක් භාවිතා කරන java.util.Collections වෙත යොමු කිරීමක් මා දුටුවේ නැත. එබැවින් එකම එකතු කිරීම.

බහු ස්ථිතික අභ්‍යන්තර පංතියක් ඇති java.util.Collections වෙතින් උදාහරණයක් එකතු කිරීම. පිටත පන්තිය හරහා ප්‍රවේශ විය යුතු කණ්ඩායම් කේත සඳහා අභ්‍යන්තර පන්ති ප්‍රයෝජනවත් වේ.

/**
 * @serial include
 */
static class UnmodifiableSet<E> extends UnmodifiableCollection<E>
                             implements Set<E>, Serializable {
    private static final long serialVersionUID = -9215047833775013803L;

    UnmodifiableSet(Set<? extends E> s)     {super(s);}
    public boolean equals(Object o) {return o == this || c.equals(o);}
    public int hashCode()           {return c.hashCode();}
}

Java.util.Collections පන්තියේ ස්ථිතික සාධක ක්‍රමය මෙන්න

public static <T> Set<T> unmodifiableSet(Set<? extends T> s) {
    return new UnmodifiableSet<>(s);
}


ඔබේ අදහස ලැබුනේ නැද්ද? ඔබට විස්තර කළ හැකිද? ඔබේ අදහස තේරුම් ගැනීමට උත්සාහ කිරීම.
ජේ රාජ්පුත්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.