래퍼 클래스 란 무엇입니까?
래퍼 클래스 란 무엇입니까?
그러한 수업은 어떻게 유용합니까?
일반적으로 래퍼 클래스는 다른 클래스 나 구성 요소의 기능을 "랩핑"또는 "캡슐화"하는 클래스입니다. 이것들은 기본 클래스 또는 구성 요소의 구현에서 추상화 수준을 제공함으로써 유용합니다. 예를 들어 COM 구성 요소를 래핑하는 래퍼 클래스는 호출 코드를 방해하지 않고 COM 구성 요소를 호출하는 프로세스를 관리 할 수 있습니다. 또한 관련된 인터페이스 포인트 수를 줄여 기본 개체의 사용을 단순화 할 수 있습니다. 종종 기본 구성 요소를보다 안전하게 사용할 수 있습니다.
간단하게 또는 다른 API로 다른 클래스 또는 API의 기능을 "랩핑"하는 클래스입니다.
참조 : 어댑터 패턴 , 외관 패턴
랩퍼 클래스는 기본 유형을 오브젝트로 사용하는 방법을 제공합니다. 각 프리미티브에 대해 다음과 같은 래퍼 클래스가 있습니다.
int Integer
byte Byte
정수 및 바이트는 기본 int 및 바이트의 래퍼 클래스입니다. 래퍼 클래스가 boxing / unboxing이라는 메커니즘을 제공하도록 프리미티브를 오브젝트로 사용해야하는 경우 시간 / 제한이 있습니다.
다음 예제에서는 개념을 다음과 같이 잘 이해할 수 있습니다.
double d = 135.0 d;
Double doubleWrapper = new Double(d);
int integerValue = doubleWrapper.intValue();
byte byteValue = doubleWrapper.byteValue();
string stringValue = doubleWrapper.stringValue();
이것이 래퍼 클래스 타입을 사용하여 다른 프리미티브 타입으로 변환 할 수있는 방법입니다. 이 유형의 변환은 기본 유형을 객체로 변환하고이를 사용하여 다른 기본 유형을 가져와야 할 때 사용됩니다.이 방법을 사용하기 위해서는 큰 코드를 작성해야합니다. 그러나 간단한 코드 작성 기술을 사용하면 다음과 같이 코드 스 니펫을 얻을 수 있습니다.
double d = 135.0;
int integerValue = (int) d ;
double 값은 명시 적으로 정수 값으로 변환되지만 다운 캐스팅이라고도합니다.
랩퍼 클래스가 반드시 다른 클래스를 랩핑 할 필요는 없습니다. dll 파일과 같은 API 클래스 래핑 기능 일 수 있습니다.
예를 들어 dll 래퍼 클래스를 생성하면 모든 dll 초기화 및 정리를 처리하고 예를 들어 작성된 함수 포인터를 래핑하는 클래스 메서드를 만드는 것이 매우 유용 할 수 있습니다 GetProcAddress()
.
건배!
래퍼 클래스는 이름과 같이 다른 것을 둘러싼 클래스입니다.
보다 공식적인 정의는 Adapter Pattern 을 구현하는 클래스입니다 . 이를 통해 하나의 API 세트를보다 사용 가능하고 읽기 쉬운 형식으로 수정할 수 있습니다. 예를 들어 C #에서 네이티브 Windows API를 사용하려면 .NET 디자인 지침을 준수하는 클래스로 래핑하는 것이 좋습니다.
랩퍼 클래스라고하는 몇 가지 디자인 패턴이 있습니다.
" 프록시, 데코레이터, 어댑터 및 브리지 패턴의 차이점은 무엇입니까? "에 대한 내 답변을 참조하십시오.
또한 일부 환경에서는 래퍼 클래스가 수행 할 수있는 많은 작업이 측면으로 대체되고 있다는 점에 유의해야합니다.
편집하다:
일반적으로 랩퍼는 랩핑 구현에 대해 걱정하지 않고 랩핑이 수행하는 기능을 확장합니다. 그렇지 않으면 랩핑 된 클래스를 확장하는 것보다 랩핑 할 필요가 없습니다. 일반적인 예는 해당 인터페이스의 모든 구현에 추가하는 것이 아니라 다른 서비스 인터페이스 주위에 타이밍 정보 또는 로깅 기능을 추가하는 것입니다.
그런 다음 이것은 Aspect 프로그래밍의 전형적인 예입니다. 기능별 인터페이스 기능을 사용하고 상용구 로깅을 추가하는 대신 측면 프로그래밍에서는 메소드의 정규 표현식 인 포인트 컷을 정의한 다음 일치하는 모든 메소드 전후에 실행하려는 메소드를 선언합니다. 포인트 컷. 어 스펙트 프로그래밍은 데코레이터 패턴을 사용하는 일종의 래퍼 클래스도 사용할 수 있지만 두 기술 모두 다른 용도로 사용된다고 말할 수 있습니다.
래퍼 클래스는 다른 클래스를 래핑하고 클라이언트와 래핑되는 원래 클래스 사이의 추상화를 제공하는 클래스입니다.
a wrapper class is usually a class that has an object as a private property. the wrapper implements that private object's API and so it can be passed as an argument where the private object would.
say you have a collection, and you want to use some sort of translation when objects are added to it - you write a wrapper class that has all the collection's methods. when add() is called, the wrapper translate the arguments instead of just passing them into the private collection.
the wrapper can be used anyplace a collection can be used, and the private object can still have other objects referring to it and reading it.
A wrapper class is a class that is used to wrap another class to add a layer of indirection and abstraction between the client and the original class being wrapped.
Wrapper class is a wrapper around a primitive data type. It represents primitive data types in their corresponding class instances e.g. a boolean data type can be represented as a Boolean class instance. All of the primitive wrapper classes in Java are immutable i.e. once assigned a value to a wrapper class instance cannot be changed further.
Java programming provides wrapper class for each primitive data types, to convert a primitive data types to correspond object of wrapper class.
To make a wrapper class well being is not a easy job. To understand a wrapper class how it is designed by some others is also not a easy job. Because it is idea, not code. Only when you understand the idea, you can understand wrapper.
Wrapper classes came in to existence to fulfill a basic need of programmers - i.e. to use primitive values wherever only Objects are allowed. As their name suggests wrapper classes wrap around a primitive value and hold the value in an Object. So, all those places where primitives were not allowed - such as generics, hashmap-keys, Arraylists etc - programmers now have an option of providing these primitive values as their corresponding wrapper types.
In addition these wrapper types have a number of utility methods for converting from primitive type to corresponding wrapper types and back, and also from Strings to wrapper types and back.
I have written a detailed article on wrapper classes in a my blog which explains the concept of wrapper types in depth - http://www.javabrahman.com/corejava/java-wrapper-classes-tutorial-with-examples/ (Disclosure - This blog is owned by me)
I currently used a wrapper class for my project and the main benefits I get (just a single benefit to widen the topic explanation):
Exception handling: My main class ,that another class wraps, has methods that are throwing exceptions if occurs any, so I created a wrapper class that handles the exceptions and logs them immediately. So, in my main scope, there is no exception handling. I just call a method and do something.
Easy Usage: I can easily initiate the object. Normally initiating phase is constructed of a lot of steps.
Code Readability: When another programmer opens my code, the code will seem very clear and easy to manipulate.
Hiding the Details: If you are generating a class that another programmer is going to use, then you can wrap the details like "error handling, exception handling, logging messages and etc..." so that the programmer will not be have to handle the chaos, just simply uses the methods.
A wrapper class is a class that serves the sole purpose of holding something and adding some functionality to it. In Java since the primitives (like ints,floats,chars...) are not objects so if you want to treat them like one then you have to use a wrapper class. Suppose you want to create a Vector of ints, the problem is a Vector only holds Objects not primitives. So what you will do is put all the ints in an Integer wrapper and use that. Example:
int number = 5;
Integer numberWrapped = new Integer(number);
//now you have the int in an object.
//and this is how to access the int value that is being wrapped.
int again = numberWrapped.intValue();
a wrapper is class which is used to communicate between two different application between different platform
참고URL : https://stackoverflow.com/questions/889160/what-is-a-wrapper-class
'IT story' 카테고리의 다른 글
입력 유형 = "제출"Vs 버튼 태그는 서로 호환됩니까? (0) | 2020.04.28 |
---|---|
Java에서 기본 메소드를 명시 적으로 호출 (0) | 2020.04.28 |
@ Scripts.Render (“~ / bundles / jquery”)를 사용해야하는 이유 (0) | 2020.04.28 |
uint8_t vs unsigned char (0) | 2020.04.28 |
파이썬에서 객체 인스턴스가 속성에 의해 동일한 지 비교 (0) | 2020.04.28 |