studio manager getpackagemanager java android android-asynctask

java - studio - getpackagemanager android



¿Cuál es la diferencia entre Long y Long en el código de Android? (8)

Integer y Long son envoltorios de objetos en los tipos de datos primos largos e int.

AsyncTask usa genéricos para determinar los valores, sin embargo, los genéricos solo toman los Objetos como parámetros.

Estaba tratando de escribir un AsycTask en una aplicación de Android. Allí me encontré con los tipos de datos Integer y Long y no estoy seguro de qué son. Intenté usar long in Place Long , pero recibí un error en eclipse diciendo

''Syntax error on token "long", Dimensions expected after this token''.


Long es la forma de Objeto de larga ...

Debe usar long e int, excepto cuando necesite utilizar métodos heredados de Object, como hashcode. Los métodos de java.util.collections generalmente usan las versiones enmarcadas (envueltas en objetos) porque necesitan funcionar para cualquier objeto.

long es también pass-by-value mientras que Long es un valor de paso por referencia como todos los tipos Java no primitivos

Además, Long puede ser nulo


Long es una clase. largo es un primitivo. Eso significa que Long puede ser nulo, mientras que long no pueda. Long puede ir a cualquier lugar que tome un Object, long can not (ya que no es una clase no deriva de Object).

Java generalmente traducirá un Long en un long automáticamente (y viceversa), pero no para nulos (ya que un long no puede ser largo), y necesitas usar la versión Long cuando necesites pasar una clase ( como en una declaración genérica).


P: ¿Cuál es la diferencia entre "largo" y "largo"?

R: El primero es un "primitivo"; este último es un "objeto".

Aquí hay un excelente artículo que sugiere por qué prefiere "Largo" (el "contenedor de objetos"):

Tipos primitivos considerados dañinos

PD:

El uso del envoltorio de objetos "largo" (incluidos los valores "nulos") ofrece muchas ventajas y ofrece muchas ventajas al utilizar la primitiva "larga" (incluida la concisión y la eficacia).

"Boxeo" y "Unboxing" es el mecanismo para cambiar entre uno y otro. Otro buen enlace:

Usando el boxeo con cuidado


También debes ser consciente del espacio que ambos toman.

Long hereda de otra clase y también contiene otros valores en el interior:

public final class Long extends Number implements Comparable<Long> { @Native public static final long MIN_VALUE = 0x8000000000000000L; @Native public static final long MAX_VALUE = 0x7fffffffffffffffL; }

long es solo una primitiva que ocupa 8 bytes de espacio.

Esto puede ser muy relevante cuando se trata de almacenar una gran cantidad de datos en la memoria o enviarlos a través de una red.


Una ventaja de la clase Long sobre el tipo largo primitivo es que Long permite ser serializada. Por lo tanto, puede usarlo en clases que se transmiten, por ejemplo, a EJB remoto o servicio web.

Los datos primitivos largos son más rápidos en las lecturas de memoria, ya que se accede directamente, mientras que la clase Long primero accede a la referencia del objeto y luego al valor.

Recuerde que Long tiene un solo campo que es un tipo primitivo largo

Por diseño y por concepto OOP debe usar solo objetos y no datos primitivos.


long es un tipo de datos primitivo, mientras que Long es un objeto.
AsyncTask solo puede tomar como parámetros objetos.


AsyncTask usa parámetros genéricos que requieren parámetros de tipo de referencia. long es un tipo primitivo, por lo que no está permitido. Por otro lado, Long es una clase, por lo que debería usarse en su lugar.