다 같은 정적 클래스 '에서' jave?
도대체 이런 제꿈의 구분된다. 정적 클래스 '정적' 할 필요가 있는 모든 방법을 너무?
필요한 것은 또 다른 방법으로 바라보고, 정적 클래스 변경되지 않은 경우 클래스에 들어 있는 모든 방법을 불지옥으 너무?
정적 클래스 며칠입니까 좋은?
위의 예는 호스트당 제안.
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;
}
}
뭐, Java 가 있지만, 정적 " 네스트된 classes" they& C #, # 39, & # 39, re 전혀 동일합니까 정적 클래스 s 의 경우 조교하실 creditbank. that& # 39 에서 왔다. 정적 클래스는 하나만 가지고 있는 네스트된 doesn& # 39, t 암시적으로 참조입니다 인스턴스입니다 외부 구분된다.
방법 및 정적 메서드는 정적 클래스 인스턴스는 네스트된 가질 수 있습니다.
There is a 정적임 네스트된 클래스, [정적임 네스트된] 이 클래스의 인스턴스를 둘러싸기 위해 인스턴스화됩니다 클래스용 필요는 없다.
이러한 클래스는 액세스만 정적 클래스 멤버 에워싼다 [정적임 네스트된 수준들과] 는 [때문에 참조입니다 없는 클래스 인스턴스는 에워싼다.]
코드 예제:
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();
}
}
정적 클래스 그러하너라 네스트된 자바 가상 머신 (jvm) 에 있다. 정적 클래스, 독립 실행형 클래스 네스트된 선언할 때 자동으로 급지될 인스턴스화하지 않아도 될 수 있는 외부 클래스용 인스턴스화되지 속한.
public class A
{
public static class B
{
}
}
정적 클래스 B '때문에' 명시적으로 인스턴스화하지 선언할 수 있다.
B b = new B();
클래스 B '참고' t stand alone, 개체 수 있도록 하겠다고 선언한 wasn& # 39, 정적 인스턴스로 would& 호출하십시오 # 39 번 다음과 같았다.
A a= new A();
B b = a.new B();
그러나 내부 클래스뿐만 정적임 로 설정할 수 있습니다 (이 때문에 멤버인지 최상위 클래스). 그 클래스 https://learning. 인스턴스화하며 없이 최상위 클래스. 다음과 같은 예를 가정합니다.
public class A {
public static class B {
}
}
이제 다른 클래스에 인사이드라면 클래스 'C', 'B' 클래스 'A' 인스턴스입니다 없이 액세스할 수 있습니다.
public class C {
A.B ab = new A.B();
}
비정적 멤버 '정적' 클래스 '너무' 가질 수 있습니다. 정적 클래스 전용 된다.
하지만 '정적' 의 클래스 재거됨 키워드가 'B', 'A' 인스턴스입니다 하지 않고 직접 액세스할 수 없습니다.
public class C {
A a = new A();
A.B ab = a. new B();
}
하지만 우리는 비정적 멤버 '정적' 클래스 '내부' 안에 가질 수 없습니다.
대답은 예 , 자바 가상 머신 (jvm) 에 정적 클래스 수 있습니다. 자바 가상 머신 (jvm) 에 정적 메서드는 정적 인스턴스 변수, 하나님이 아니라, 또한 정적임 블록 . 정적 클래스는 자바 가상 머신 (jvm) 에 만들 수도 있습니다.
(외부), 자바 가상 머신 (jvm) 에 이런음식을 최상위 클래스 만드는 정적. 전용 네스트된 클래스뿐만 static. 수 있습니다.
외부 클래스, 하지만 참조입니다 네스트된 필요로 하지 않는 정적 클래스 내부 또는 외부 클래스용 클래스용 单捞磐啊 비정적 네스트된 클래스 참조입니다.
내부 액세스하려면 모두 정적 클래스 (또는 비정적 네스트된 클래스) 비정적 멤버 및 외부 구분된다. 정적 클래스 비정적 멤버 외부 클래스용 액세스할 수 없습니다. 또한 액세스만 정적임 외부 클래스 멤버.
볼 수 있습니다. https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
이를 위해 가장 중요한 결과를 보고 구글 " 정적 클래스 java"; 그리고 최고의 isn& 오토메이티드 # 39, t, d # 39 여기 내가 생각 I& 추가합니다. # 39 m, s # 39 로 해석, i& OP& 관한 질문에 정적 클래스 C #, Java 에 있는 싱글 세계) 으로 알려져 있다. 이 사람들을 위한 비인식, C # 의 " static"; 즉 결과 클래스 a 클래스 선언에 적용할 수 있는 키워드가 될 수 없다며 인스턴스화됩니다.
Java - 두 번째 Edition" 유효인 발췌문 에서 "; 조슈아 의해 블로흐 (ernest bloch, 가장 좋은 것으로 널리 jave 스타일입니까 안내선 사용 가능).
>. Vmware. 릴리스에는 1.5 세 번째 싱글 외곽진입 구축할 수 있습니다. 단순히 입력하십시ᄃ오 이넘 하나로 만드는 요소: >. >. 기본 외곽진입 // 이넘 싱글턴 >. 공용 이넘 엘비스 { >. 인스턴스입니다. >. public void 리베이비유딩 () {. } >. } >. >. 이 방식은 기능적으로 avamer 대중에게 무료로 제공하는 것이 보다 간결한 직렬화하지 외곽진입 제외한 필드, 기계 및 는 여러 개의 인스턴스 또는 반사, 심지어 침묵이군 정교한 직렬화하지 작성하더라도 아이온크래드 대해 설명했다. 그 동안 외곽진입 아직 구매할 수 있다, a 단일요소의 이넘 유형은 구현할 수 있는 최선의 방법은 singleton. (# 39 의 author& 강조)
내 생각에는 구축 및 자리맞춤 자체 설명 할 수 있다.
간단히 말해, 자바 클래스의 정적 대해서만 up1 선언을 할 수 가 아닌 내부 클래스뿐만 최상위 클래스.
java 프로젝트를 최상위 classes: 둘 이상의 최상위 클래스에 포함될 수 있는 java 소스 파일을 파일 이름을 따서 각 클래스 중 하나가 있다. 세 가지 옵션 또는 여러_키워드 가지뿐입니다 앞에서 공개, 요약 및 최종 , * 허용됩니까 최상위 클래스.
내부 classes: 클래스뿐만 최상위 클래스 내부에 있는 내부 클래스뿐만, 이는 기본적으로 总监和首席信息官完全了解 네스트된 클래스뿐만) 이라고 부른다. * 내부 클래스뿐만 정적임 수 있습니다. 이 아이디어는 활용할 수 있도록 내부 클래스뿐만 정적임 는 시행하십시오 객체에는 인스턴스화하며 개체는 최상위 클래스 내부 클래스뿐만 인스턴스화하며 않고 있다. 이것이 정확히 동일한 방식으로 정적임 방법 및 변수 안에 작동합니까 최상위 클래스.
Java 는 내부 정적 클래스 수준 (in 네스트된 클래스뿐만) * 수업을 업그레이드됨
및 Java 수업을 최상위 Classes.* 정적임 지원하지 않습니다.
이 질문에 대한 기본적인 이해를 바란다 "는 자바 가상 머신 (jvm) 에 대한 해결책을 간단해진다는 정적 클래스.
정적 클래스는 사용하여 간단히 멋지구리해요 그룹화용으로 것입니다. 자바 클래스를 사용할 수 있게 그룹화하려면 때문에, 우리는 그들을 지킬 수 있는 키워드를 단순히 그룹화합니다 서로 함께 단일 정적.
정적 클래스 및 java 는 네스트된 수 있습니다. 이와 같은 정적 클래스는 eschweiler-clarke 정적임 네스트된 클래스뿐만. 정적 클래스 액세스만 정적 클래스 멤버 외부 jave 네스트된 수 있습니다. 정적 클래스 비슷한 동작을 네스트된 최상위 클래스 및 네스트됩니다 패키지할 대해서만 편의를 돕는다.
예를 들면 살펴보겠습니다 jave 정적 클래스 어때, 자바 프로그램을 사용할 수 있습니다.
public class OuterClass {
private static String name = "Mohammad";
// static nested class
static class StaticNestedClass {
private int a;
public int getA() {
return this.a;
}
public String getName() {
return name;
}
}
}
이제 어떻게 네스트된 인스턴스화합니다 및 사용 정적 클래스입니다.
public class StaticNestedClassTest {
public static void main(String[] args) {
//creating instance of static nested class
OuterClass.StaticNestedClass nested = new OuterClass.StaticNestedClass();
//accessing outer class static member
System.out.println(nested.getName()); // Printing "Mohammad"
}
}
더 자세한 내용을 확인할 수 있습니다.
이해 정적 클래스 네스트된 자바 가상 머신 (jvm) 에 자바 클래스
정적 클래스의 객체를 만들지 않고 메서드입니다 의미다 https://learning. 달리 공개:
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
}
}
내부 클래스 (class static 키워드를 것이 아니라면, 함께 사용할 수 없습니다. 정적 클래스는 클래스 원하는거요 네스트된 내부 구성원 중 외부 정적 클래스입니다. 다른 정적 클래스 멤버 사용하여 외부 인스턴스화하며 없이 액세스할 수 있습니다. 정적 멤버 마찬가지로 정적 클래스 인스턴스 변수 및 메서드을 네스트된 액세스할 수 없는 외부 층의 구분된다.
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();
}
}
모두 좋은 답변을 하지 않았다, 하지만 난 정적 클래스를 사용하는 것을 참조입니다 제바스티우스콜레스티언스 세제곱밀리미터 내부 그들의 정적임 팩터에서의 방법. 그래서 추가 마찬가지다.
예를 들어 여러 내부 제바스티우스콜레스티언스 에서 추가 디스크입니다. diskid 정적 클래스입니다. 내부 클래스뿐만 그룹화하려면 코드를 통해 액세스되는 하는 외부 클래스용 유용하게 사용할 수 있습니다.
/**
* @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();}
}
다음은 팩터에서의 방법을 제바스티우스콜레스티언스 정적 클래스
public static <T> Set<T> unmodifiableSet(Set<? extends T> s) {
return new UnmodifiableSet<>(s);
}