E muito comum quando estamos desenvolvendo interfaces graficas seja em Swing ou Android o uso de classes anonimas, geralmente usamos classes anonimas como callbacks em listeners de eventos. Devido as caracteristicas do Java, quando precisamos de um callback passamos uma instancia de classe como parametro ao inves de simples funcoes como podemos fazer em Javascript por exemplo.Repare que no codigo acima temos um erro, pois tentamos acessar a variavel "content" dentro de uma inner class. Para resolver o problema e simples, basta declararmos "content" como final.Para entender porque devemos declarar variaveis a serem acessadas em inner classes como final, devemos primeiro entender como inner classes sao traduzidas em byte code.Quando temos uma inner class ela nao e gerada no mesmo arquivo de byte code da classe que a contem (outer class), sao gerados dois arquivos, um com a outer class e outro com a inner class:Classe1.classClasse1$OnClickListener.classAqui surge um problema, nossa classe Classe1$OnClickListener.class precisa acessar a variavel "content" declarada em Classe1.class. Para que isso seja possivel o compilador cria em Classe1$OnClickListener.class um atributo que recebe uma copia do valor da variavel da outer class. Mas imagine que por algum motivo a variavel em Classe1.class ou mesmo o atributo em Classe1$OnClickListener.class tenha seu valor alterado, teriamos um problema de sincronizacao de dados. Para evitar este problema somos obrigados a declararmos as variaveis que serao usadas em inner classes como final, assim os valores tanto nas outer classes e inner classes serao iguais.Referencias:http://stackoverflow.com/questions/7423028/java-local-variable-visibility-in-anonymous-inner-classes-why-is-final-keywohttp://techtracer.com/2008/04/14/mystery-of-accessibility-in-local-inner-classes/ Algum tempo atras estava procurando como configurar a dupla Eclipse + Maven para um projeto web e nao consegui encontrar em um unico site as instrucoes para realizar a tarefa, entao estou escrevendo este guia para auxiliar os desenvolvedores com a mesma dificuldade.Uso o Maven apenas para gerenciar as dependencias, portanto a configuracao realizada foi a mais simples possivel para rodar o projeto.O primeiro passo e instalar o m2e. Caso esteja usando o Eclipse Indigo basta ir no menu Help, depois Eclipse Market Place. Digite na caixa de busca m2e e instale o plugin.O proximo passo e criar um Maven Project. Va em File, New, Other e entao procure por Maven Project.Selecione a opcao Create a simple project. Preencha o Group Id e Artifact Id do projeto, em Packing escolha a opcao war, por se tratar de um projeto web.Com o projeto criado, clique com o direito no projeto e escolha Properties >> Project Facets >> Convert to faceted from...Marque a opcao Dynamic Web Module.Clique em Further Configuration avaliable e altere o Content Directory para: /src/main/webapp. Pressione OK.Agora faremos com que as libs gerenciadas pelo maven sejam incluidas no deploy. Va novamente nas propriedades selecione Deployment Assembly >> Add >> Java Build Path Entries >> Maven Dependencies.Pronto! Agora e so adicionar suas dependencias no pom.xml.Abracos Vivemos o problema de viver esperando as coisas acontecerem. Vivemos esperando o dia em que seremos melhores e so reclamamos, vivemos esperando o dia em que seremos melhores no amor e so pensamos em nos mesmos, vivemos esperando o dia em que seremos melhores na dor e nao suportamos uma critica.Nunca seremos melhores enquanto olharmos so para