O que é uma aula de papel?

O que é uma aula de embalagem?
Como essas aulas são úteis?

Author: Patrick McDonald, 2009-05-20

17 answers

Em geral, uma classe wrapper é qualquer classe que "wrapsula" ou "encapsula" a funcionalidade de outra classe ou componente. Estes são úteis ao fornecer um nível de abstração da implementação da classe ou componente subjacente; por exemplo, classes de wrap que wrap com componentes podem gerenciar o processo de invocar o componente COM sem incomodar o código de chamada com ele. Eles também podem simplificar o uso do objeto subjacente, reduzindo os pontos de interface número muitas vezes, isto permite uma utilização mais segura dos componentes subjacentes.

 156
Author: Paul Sonier, 2009-05-20 17:19:59

Apenas o que parece: uma classe que "wraps" a funcionalidade de outra classe ou API em uma API mais simples ou meramente diferente.

Ver: Padrão do adaptador, Padrão da fachada

 64
Author: Shog9, 2009-05-20 17:18:10

As classes de embalagens fornecem uma forma de usar tipos primitivos como objectos. Para cada primitivo, temos uma classe de embalagens como,

int Integer
byte Byte 

Inteiro e Byte são as classes de embrulho do inteiro e byte primitivo. Existem tempos/restrições em que você precisa usar os primitivos como objetos de modo que as classes de embrulho fornecem um mecanismo chamado de boxing / descompressão.

O conceito pode ser bem entendido pelo seguinte exemplo como

double d = 135.0 d;
Double doubleWrapper = new Double(d);

int integerValue = doubleWrapper.intValue();
byte byteValue = doubleWrapper.byteValue();
string stringValue = doubleWrapper.stringValue();
Então esta é a maneira, podemos usar a aula de papel de embrulho. tipo para se converter em outros tipos primitivos também. Este tipo de conversão é usado quando você precisa converter um tipo primitivo para objeto e usá-los para obter outros primitivos também.Embora para esta abordagem , você precisa escrever um grande Código . No entanto, o mesmo pode ser alcançado com a técnica de vazamento simples como o excerto de código pode ser alcançado como abaixo
double d = 135.0;
int integerValue = (int) d ;

Embora o valor duplo seja explicitamente convertido para o valor inteiro também chamado de downcasting.

 38
Author: SBTec, 2017-10-07 11:22:37
Uma classe de papel não precisa necessariamente de envolver outra classe. Pode ser uma funcionalidade de empacotamento de classe API em, por exemplo, um arquivo dll.

Por exemplo, pode ser muito útil criar uma classe DLL wrapper, que cuida de toda a inicialização e limpeza dll e cria métodos de classe que enrolam ponteiros de função criados por exemplo GetProcAddress().

Saúde !
 17
Author: ralphtheninja, 2018-03-25 23:45:11
Uma classe de papel é uma classe que "envolve" em torno de outra coisa, tal como o seu nome.

A definição mais formal dela seria uma classe que implementa o padrão adaptador . Isto permite-lhe modificar um conjunto de APIs numa forma mais utilizável e legível. Por exemplo, em C#, Se você quiser usar a API nativa do Windows, Ela ajuda a envolvê-la em uma classe que está em conformidade com as Diretrizes de design.net.

 8
Author: Reed Copsey, 2009-05-20 17:18:52
Existem vários padrões de design que podem ser chamados de classes de embalagens.

Veja a minha resposta para " Como é que os padrões de Proxy, decorador, adaptador e Ponte diferem?"

 8
Author: Bill Karwin, 2017-05-23 12:10:10

Também pode ser valioso notar que, em alguns ambientes, muito do que as classes de papel podem fazer está a ser substituído por aspectos.

Editar:

Em geral, um invólucro vai expandir-se sobre o que o invólucro faz, sem se preocupar com a implementação do Invólucro, caso contrário, não vale a pena embrulhar em vez de estender a classe embrulhada. Um exemplo típico é adicionar informações de tempo ou funcionalidade de registro em torno de alguma outra interface de serviço, em oposição a adicionando-o a cada implementação dessa interface.

Isto acaba por ser um exemplo típico de programação de aspecto. Em vez de passar por uma função de interface por função e adicionar um login boilerplate, na programação de aspecto você define um pointcut, que é um tipo de expressão regular para os métodos, e então declarar os métodos que você deseja ter executado antes, depois ou em torno de todos os métodos correspondentes ao pointcut. É provavelmente justo dizer que a programação de aspecto é uma espécie de o uso do padrão do decorador, que as classes wrapper também podem ser usadas, mas que ambas as tecnologias têm outros usos.

 7
Author: Jherico, 2009-05-20 18:57:15

A classe Wrapper é uma classe que envolve a outra classe e fornece a abstracção entre o cliente e a classe original que está a ser embrulhada.

 7
Author: Rakesh verma, 2011-09-09 05:11:15

Uma classe de papel é geralmente uma classe que tem um objeto como uma propriedade privada. o invólucro implementa a API desse objeto privado e assim pode ser passado como um argumento onde o objeto privado o faria.

Diga que tem uma colecção, e que quer usar algum tipo de tradução quando os objectos são adicionados a ela - você escreve uma classe de papel que tem todos os métodos da colecção. quando o add() é chamado, o invólucro traduz os argumentos em vez de apenas passá-los para o privado coleccao.

A embalagem pode ser usada em qualquer lugar onde uma colecção possa ser usada, e o objecto privado ainda pode ter outros objectos a referir-se a ela e a lê-la.

 5
Author: Amir Arad, 2009-05-20 17:25:44

Uma classe wrapper é uma classe que é usada para envolver outra classe para adicionar uma camada de indireção e abstração entre o cliente e a classe original sendo embrulhada.

 3
Author: Andrew Hare, 2009-05-20 17:18:39
A classe Wrapper é uma wrapper em torno de um tipo de dados primitivo. Representa tipos de dados primitivos em suas instâncias de classe correspondentes, por exemplo, um tipo de dados booleanos pode ser representado como uma instância de classe booleana. Todas as classes wrapper primitivas em Java são imutáveis, ou seja, uma vez atribuído um valor a uma instância de classe wrapper não pode ser alterado mais.
 3
Author: David, 2011-07-04 08:14:17

A programação Java fornece a classe wrapper para cada tipo de dados primitivo, para converter um tipo de dados primitivo para corresponder a um objeto da classe wrapper.

 3
Author: THOSEEF PASHA, 2012-05-01 12:42:22
Fazer uma aula de papel de embrulho não é um trabalho fácil. Compreender uma classe de embalagem como ela é projetada por alguns outros também não é um trabalho fácil. Porque é ideia, Não código. Só quando se compreende a ideia é que se compreende o papel.
 1
Author: Tony, 2014-11-18 03:14:38

As classes de invólucro surgiram para satisfazer uma necessidade básica de programadores - isto é, para usar valores primitivos onde apenas objectos são permitidos. Como seu nome sugere classes de envoltório enrolam em torno de um valor primitivo e manter o valor em um objeto. Assim, todos os lugares onde os primitivos não eram permitidos-tais como genéricos, HashMap - keys, Arraylists etc-programadores agora têm uma opção de fornecer esses valores primitivos como seus tipos de wrap correspondentes.

Além disso, estes os tipos de wrapper têm uma série de métodos de utilidade para converter de tipo primitivo para tipos de wrapper correspondentes e de volta, e também de Strings para tipos de wrapper e de volta.

Eu escrevi um artigo detalhado sobre as classes de papel em um meu blog que explica o conceito de tipos de papel em profundidade - http://www.javabrahman.com/corejava/java-wrapper-classes-tutorial-with-examples/ (Disclosure - This blog is owned by me)
 0
Author: Dhruv Rai Puri, 2015-11-03 06:23:57
Actualmente, usei uma aula de embalagem para o meu projecto e os principais benefícios que obtenho (apenas um benefício para alargar a explicação temática):

Tratamento de excepção: a minha classe principal, que outra classe wraps, tem métodos que estão a lançar excepções se ocorrer alguma, por isso criei uma classe de papel que lida com as excepções e regista-as imediatamente. Portanto, no meu âmbito principal, não há tratamento de excepções. Eu chamo um método e faço alguma coisa.

Uso Fácil: posso facilmente iniciar o objecto. Normalmente a fase inicial é construída de um monte de passos.

Legibilidade do código: quando outro programador abrir o meu código, o código parecerá muito claro e fácil de manipular.

Esconder os detalhes: se estiver a gerar uma classe que outro programador irá usar, então poderá embrulhar os detalhes como " tratamento de erros, tratamento de excepções, registo de mensagens e etc..."para que o programador não tenha que lidar com o caos, apenas usa os métodos.

 0
Author: Bahadir Tasdemir, 2015-11-20 09:27:17

Uma classe wrapper é uma classe que serve o único propósito de segurar algo e adicionar alguma funcionalidade a ele. Em Java desde os primitivos (como ints,flutuadores,chars...) não são objetos, então se você quiser tratá-los como um, então você tem que usar uma classe de papel. Suponha que você quer criar um vetor de ints, o problema é que um vetor só contém objetos não primitivos. Então o que você vai fazer é colocar todos os ints em um invólucro inteiro e usar isso. Exemplo:

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();
 -1
Author: Reza Baradaran Gazorisangi, 2015-12-14 14:09:45

Um invólucro é uma classe que é usada para comunicar entre duas aplicações diferentes entre plataformas diferentes

 -7
Author: laxminarayan, 2011-09-27 11:46:11