Depois de alguns anos, voltando a trabalhar com C# e com isso, algumas novidades. Se tem uma coisa que senti saudade no C# que o Java não tinha são o operador de coalescência nula e o operador de condicional nulos (também conhecido como Operador Elvis, porque parece um emoticon do Elvis Presley), muito útil para evitar o tal famoso NullPointerException. Mas vamos por partes:
Blog onde registro todas as minhas pesquisas e compartilhando as mesmas para quem esteja interessado.
terça-feira, 7 de junho de 2022
terça-feira, 6 de julho de 2021
Javascript: Verificar se uma string é vazia | Valores considerados falsos
- false (Boolean e o mais óbvio)
- 0, -0, 0.0 e 0x0 (Number, todos os formatos de zero);
- 0n e 0x0n (BigInt, este tipo de dado foi introduzido em 2020. Igual ao Number, mas como ambos os tipos não devem se misturar em operações, então vamos manter eles separados);
- "", '' e `` (Strings vazias);
- null (valor nulo);
- undefined (valor indefinido);
- NaN (Not a Number);
segunda-feira, 21 de junho de 2021
Java: Verificando a classe de um objeto (instanceof)
Existem alguns casos em que é necessário verificar a classe de um objeto instanciado. Existe duas maneiras de verificar isso. A primeira é utilizando o operador instanceof, utilizado quando a classe é conhecida em tempo de compilação. A sintaxe é a seguinte:
[Objeto] instanceof [NomeDaClasse]
Exemplo de Código:
if(animal instanceof Cachorro){
//Entra aqui se a instância de animal for da classe Cachorro
}
Entretanto, pode haver casos em que você deverá fazer uma verificação de classe em tempo de execução. Você pode obter uma referência do tipo da classe através de um objeto Class. Tendo o objeto Class da classe que deseja, você pode utilizar o método isInstance para fazer a verificação.
Exemplo:
Class classInfo = Cachorro.class;
if(classInfo.isInstance(animal)){
//Entra aqui se a instância de animal for da classe Cachorro
}
Então é isso por hoje.
quinta-feira, 28 de janeiro de 2021
Javascript: Problemas com Requisição de URL
Alguns problemas comuns quando você faz uma requisição de uma URL são alguns caracteres especiais, nos quais geralmente dá dor de cabeça. Entretanto, existe caracteres mais especiais no meu caso. Precisava fazer uma requisição e passar por get uma string que continha um caractere "+". O problema é que por padrão URI, um sinal de "+" é usado para representar um espaço e quando chegava no back-end da aplicação, o sinal simplesmente sumia.
Aí que entra uma questão. Para tratar uma URI, no Javascript temos o comando encodeURI(), entretanto, ele não codifica os caracteres que são usadas por padrão (por exemplo, os caracteres : e / do "http://"), e o nosso "+" está incluso nisso.Para isso, a função correta para ser usada é "encodeURIComponent()", onde você usará na string que vai ser enviado por get. Exemplo de uso:
terça-feira, 26 de janeiro de 2021
SQL Server: Concatenação
Durante um trabalho, precisei utilizar a concatenação no SQL Server. Normalmente utilizo a função CONCAT, mas para a minha não tão surpresa, a versão do cliente era mais antigo. Então, hoje vou registrar aqui as formas de concatenação possível no SQL Server.
terça-feira, 29 de dezembro de 2020
Java: Switch e Strings
Diferente de muitas linguagens, a linguagem JAVA permite desde a versão 1.7 utilizar Strings como controle de fluxo. O exemplo abaixo mostra como podemos utilizar:
switch(str){
case "Tchau":
System.out.println("Tchau");
break;
case "Olá! Está aí?":
System.out.println("Sim, estou");
break;
default:
System.out.println("Não entendi");
}
O código acima seria o equivalente ao código abaixo realizado com if-else em cascata, mas é mais elegante utilizar da maneira acima, além de que o bytecode gerado é mais eficiente:
if (str.equals("Tchau")){
System.out.println("Tchau");
}else if (str.equals("Olá! Está aí?")){
System.out.println("Sim, estou");
}else{
System.out.println("Não entendi");
}
Android+Gradle: Depreciação da configuração de dependência
"Configuration 'androidTestCompile' is obsolete and has been replaced with 'androidTestImplementation' and 'androidTestApi'.
It will be removed at the end of 2018. For more information see: http://d.android.com/r/tools/update-dependency-configurations.html"
Então foi que eu fiz, visitei o link, mas como temos alguns artigos que fiz, então vamos ver o que precisei mudar e o que recomendo.
Bem, vamos começar com a mensagem acima: o comando "androidTestCompile" vai ser substituído pelo "androidTestImplementation" e "androidTestApi". Entretanto, é curioso porque uma outra mensagem é a seguinte:
"Configuration 'androidTestApi' is obsolete and has been replaced with 'androidTestImplementation'.
It will be removed at the end of 2018. For more information see: http://d.android.com/r/tools/update-dependency-configurations.html"Bem, agora só sobrou nós utilizarmos "androidTestImplementation".
A próxima mensagem é a seguinte:
"Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.
It will be removed at the end of 2018. For more information see: http://d.android.com/r/tools/update-dependency-configurations.html"Essa mensagem aparece quando usamos uma biblioteca externa, mas qual é a diferença? Quando você usa "implementation", você está garantindo o encapsulamento da biblioteca, enquanto que a "api" permite visualizar e manipular arquivos internos. Dica de ouro? Troque para "implementation" em aplicativos em geral e aprenda a respeitar o encapsulamento, pois se está privado, é porque você não deve mexer com tais objetos. Se você está mexendo com bibliotecas para ser distribuído, use "api".
Ah! Existe uma terceira possibilidade para substituir o "compile" que é "annotationProcessor", use-o quando você quer utilizar uma biblioteca de anotações.