Java 언어 class 클래스 사용법 및 범용(상세)
말하자면
Class 클래스도 클래스의 하나입니다. 이름과class 키워드의 높이가 비슷합니다.Java는 대소문자에 민감한 언어입니다.
Class 클래스의 대상 내용은 당신이 만든 클래스의 유형 정보입니다. 예를 들어shapes 클래스를 만들면 Java는 shapes 클래스의 대상을 생성합니다.
Class 클래스의 대상은 일반 클래스와 같이 new shapes () 방식으로 만들 수 없습니다. 이 클래스는public 구조 함수가 없기 때문에 JVM에서만 만들 수 있습니다.
Class 클래스의 역할은 실행할 때 어떤 대상의 유형 정보를 제공하거나 얻는 것입니다. C++의 typeid () 함수와 유사합니다.이 정보는 반사에도 사용할 수 있다.
1. Class 클래스 원리
우리는 모든java클래스가object클래스를 계승한 것을 알고 있다.object클래스에 getclass()가 있다.이 방법은 이 클래스가 실례화된 대상의 이 클래스를 인용하는 데 사용되며, 이 인용은 클래스 클래스의 대상을 가리킨다.우리는 클래스 대상 (구조 함수는private) 을 만들 수 없습니다. 이 클래스의 대상은 클래스가 호출될 때 자바 가상 컴퓨터에서 클래스 대상을 자동으로 만들거나 클래스 마운트의 defineClass 방법을 통해 생성됩니다.Class 클래스에 속한 객체의 위치를 기록하는 필드가 생성됩니다.다음 그림과 같이
2. 클래스 객체 1개 얻기
첫 번째 방법, Class 클래스의 forName 함수
public class shapes{}
Class obj= Class.forName("shapes");
두 번째 방법, 대상의 getClass () 함수를 사용합니다
public class shapes{}
shapes s1=new shapes();
Class obj=s1.getClass();
Class obj1=s1.getSuperclass();// shapes
세 번째 방법, 유서면 상량 사용
Class obj=String.class;
Class obj1=int.class;
이 방법을 사용하면 클래스 클래스 객체를 생성할 때 JVM이 자동으로 클래스를 로드하지 않습니다(예: String 클래스).다른 방법으로 JVM은 클래스를 초기화합니다.3. Class 클래스의 대상을 사용하여 목표 클래스의 실례를 생성한다
부정확한object 실례 생성
클래스 클래스의 대상을 가져오면 newInstance () 함수로 목표 클래스의 실례를 생성할 수 있습니다.그러나 이 함수는 목표 클래스의 실례를 직접 생성할 수 없고object 클래스의 실례만 생성할 수 있습니다
Class obj=Class.forName("shapes");
Object ShapesInstance=obj.newInstance();
범용 클래스 참조를 사용하여 테이프 유형의 대상 인스턴스 생성
Class<shapes> obj=shapes.class;
shapes newShape=obj.newInstance();
유형 제한이 있기 때문에 범용 클래스 문법을 사용하는 대상 인용은 다른 종류를 가리킬 수 없습니다.
Class obj1=int.class;
Class<Integer> obj2=int.class;
obj1=double.class;
//obj2=double.class;
이 줄의 코드는 불법입니다.obj2는 다른 종류를 가리킬 수 없습니다그러나 클래스의 대상으로 기류의 모든 하위 클래스를 가리킬 수 있는 유연한 사용법이 있습니다.
Class<? extends Number> obj=int.class;
obj=Number.class;
obj=double.class;
따라서 다음 문법으로 생성된 Class 대상은 모든 종류를 가리킬 수 있다.
Class<?> obj=int.class;
obj=double.class;
obj=shapes.class;
마지막으로 이상한 용법은 당신이 이런 범용 문법을 사용하여 당신이 가지고 있는 클래스 유형의 대상의 기본 대상을 구축할 때 반드시 아래의 특수 문법을 사용해야 한다는 것이다
public class shapes{}
class round extends shapes{}
Class<round> rclass=round.class;
Class<? super round> sclass= rclass.getSuperClass();
//Class<shapes> sclass=rclass.getSuperClass();
여기서 주의해야 할 것은 라운드의 기류가 바로 shapes라는 것을 뻔히 알면서도 Class상기 내용 소개는 자바 언어 클래스 사용법 및 범화(상해)의 모든 내용을 대상으로 하는 것이니 상기 내용 소개를 좋아하시기 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.