• Nenhum resultado encontrado

A partir do Java 10 habemus Inferência para variáveis locais!

N/A
N/A
Protected

Academic year: 2021

Share "A partir do Java 10 habemus Inferência para variáveis locais!"

Copied!
25
0
0

Texto

(1)

A partir do Java 10

habemus Inferência

para variáveis

(2)

OLÁ!!

(3)

AGENDA

○ O que é inferência de tipo em variáveis locais? ○ Quais as vantagens?

Como funciona?Qual o impacto? ○ Benefícios

Limitações

○ Utilizando var em funções lambda

(4)
(5)

Inferência é uma dedução

feita com base em

informações ou um

raciocínio que usa dados

disponíveis para se chegar

a uma conclusão.

(6)

Inferência é uma dedução feita com base em

informações ou um raciocínio que usa dados

disponíveis para se chegar a uma conclusão.

(7)

Traduzindo… o compilador vai

adivinhar o tipo da variável para

você baseado na inicialização.

(8)

VEM PRO CÓDIGO, VEM!

var

numeroDez =

10

;

var

usuario =

new

Usuario();

(9)

+

Legibilidade

-

Verbosidade

(10)

//Antes do Java 10

QueueAccessRQ queueAccessRQ = new QueueAccessRQ();

QueueAccessRQ.Navigation navigation = new QueueAccessRQ.Navigation(); QueueAccessRQ.Navigation.Direction direction = new

QueueAccessRQ.Navigation.Direction();

InternationalCustomerOrderProcessor<AnonymousCustomer, SimpleOrder<Book>> orderProcessor = createInternationalOrderProcessor(customer, order);

(11)

//A partir do Java 10

var queueAccessRQ = new QueueAccessRQ();

var navigation = new QueueAccessRQ.Navigation();

var direction = new QueueAccessRQ.Navigation.Direction();

var orderProcessor = createInternationalOrderProcessor(customer, order);

(12)

Como

(13)

Ao encontrar a palavra var no teu código, o

compilador vai saber que o tipo da variável

vai estar no lado direito da declaração,

também conhecida como inicializador.

Na hora de compilar esse código ele irá

inferir o tipo do lado esquerdo da

declaração.

(14)

VEM PRO CÓDIGO, VEM!

//como escrevemos

var numeroDez = 10;

var user = new User();

var list=List.of("1","2");

//depois de compilado

int numeroDez = 10;

(15)

QUAL O

IMPACTO?

(16)

QUAL O IMPACTO?

×

Desempenho:

(17)

QUAL O IMPACTO?

×

Compatibilidade com códigos antigos: Só

para classes ou interfaces com o nome

var

17

var var = 5; //sintaticamente correto

package var; //sintaticamente correto

class var{ } //erro de compilação

(18)

Benefícios

Aumenta a clareza do código

Reduz o boilerplate

(19)

Limitações

var nome;

var numero = null;

var usuario = "Bojack", sobrenome = "Horseman";

var appendSpace = a -> a + " ";

var compareString = String::compareTo;

public var getNomeDoFilho(){ return this.nomeDoFilho; }

(20)

Utilizando

var

em funções

lambda

(21)

×

O Java 11 trouxe com ele uma atualização na

funcionalidade de inferência de tipo. Agora é

possível que var seja usado para declarar os

parâmetros formais de uma expressão lambda

implicitamente tipada.

(22)
(23)

Com isso podemos utilizar anotações de tipo. Essa

anotações adicionam metadados que ajudam a reduzir o

número de erros no código. Baseado nessas anotações, o

compilador pode emitir alertas ao concluir que o código não

atende a certos requerimentos.

(24)

VEM PRO CÓDIGO, VEM!

(@Nonnull var valor, @Nonnull var conversor) -> conversor.converter(valor);

//Ao executar o código acima teríamos a oportunidade de capturar o seguinte erro em tempo de compilação

Null type mismatch: required ''@NonNull Double'' but the provided value is null

(25)

Referências

Documentos relacionados

Parágrafo primeiro – O direito às bolsas de estudo passa a vigorar ao término do contrato de experiência, cuja duração não pode exceder de 90 (noventa) dias, conforme

Considerando que está fora do escopo dos estudos antropológicos a descrição sobre como o jeitinho é cons- truído na fala-em-interação pelos participantes e também que a

A partir dos estudos empíricos será possível (re)conhecer comportamentos de recusa e rejeição por parte de mulheres pentecostais, pois as práticas femininas de

Principais mudanças na PNAB 2017  Estratégia Saúde da Família/Equipe de Atenção Básica  Agentes Comunitários de Saúde  Integração da AB e Vigilância 

Fica advertido, ainda, que, nesse prazo, o réu poderá oferecer embargos, e caso não haja o cumprimento da obrigação ou o oferecimento de embargos, &#34;constituir-se-á, de pleno

Este seguro tem por objetivo garantir uma indenização, ao Segurado ou aos seus beneficiários, até o limite do Capital Segurado estabelecido para cada cobertura contratada, na forma

•   O  material  a  seguir  consiste  de  adaptações  e  extensões  dos  originais  gentilmente  cedidos  pelo 

num ritmo aproximado de uma flexão em cada 3 segundos, partindo da posição facial, mantendo o corpo em extensão, atingindo ou ultrapassando o nível de prestação definido (