Elyst Posted June 7, 2013 at 05:03 PM Report #511554 Posted June 7, 2013 at 05:03 PM Boas, Estou com uma dúvida de Java. Já andei às voltas com isto e não encontro uma solução "limpa". Pensei em deixar aqui a duvida. Estou a trabalhar num projecto um tanto complexo e estou a implementar uma classe. Nessa classe eu recebo um vector estático de objectos public static final Parameter[] parameters = new Parameter[2]; Point is, este vector tem de ser final e tem de ser estático senão o programa estoura. O problema é que posso receber n parametros para preencher o vector. Alterar o vector para um ArrayList não é uma hipotese. A unica soluçao que encontrei foi usar um Realloc, mas ao usar isto, parameters = a.JRealloc(parameters); Ele não aceita porque a variável é final. A minha dúvida. Será possível contornar esta questão de alguma forma ou tenho mesmo de criar o vector com um numero monstruoso e tratá-lo assim? “The trouble with programmers is that you can never tell what a programmer is doing until it’s too late.”(Seymour Cray)
KTachyon Posted June 7, 2013 at 05:12 PM Report #511556 Posted June 7, 2013 at 05:12 PM Final significa que é constante, logo não podes alterar o valor. Static significa que é uma propriedade da classe e não da instância. Aquilo que pretendes fazer não é compatível com o final, logo a solução é retirares essa keyword do código. “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare
HappyHippyHippo Posted June 7, 2013 at 05:44 PM Report #511563 Posted June 7, 2013 at 05:44 PM Point is, este vector tem de ser final e tem de ser estático senão o programa estoura. mas tens código que não é teu que deves seguir e não podes alterar ? é que o uso de static com o final é a mesma coisa que ter valores constantes globais. não necessitam de estar associados a uma instância da classe onde foram declarados e não os podes alterar: public Class A{ public static final int Var1 = 10; // podes aceder sempre mas nunca podes alterar o valor public static int Var2 = 20; // podes aceder sempre e podes alterar o valor public int Var3 = 30; // necessitas de uma instância da classe A ao qual o valor está associado}[/Code] IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Elyst Posted June 7, 2013 at 08:56 PM Author Report #511593 Posted June 7, 2013 at 08:56 PM Se calhar não fui claro quanto a essa parte. O código que tenho é de um trabalho já iniciado por outros colegas e passado para mim e outros. Posso de facto alterar de modo a que o vector não seja final... mas nesse caso o programa não vai funcionar porque noutras situações é necessário que ele seja final. Ou seja não tenho mesmo outra solução senão declarar o vector com muito espaço e tratar aquilo assim, esperando que não o excedam... “The trouble with programmers is that you can never tell what a programmer is doing until it’s too late.”(Seymour Cray)
HappyHippyHippo Posted June 7, 2013 at 09:43 PM Report #511602 Posted June 7, 2013 at 09:43 PM e onde está o problema em pegar no código de outra pessoa e corrigi-lo ? se o que fizeram está mal, não podes fazer nada em relação a isso ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Elyst Posted June 7, 2013 at 10:18 PM Author Report #511607 Posted June 7, 2013 at 10:18 PM A questão é que não está "mal". Simplesmente foi por esse metodo que eles decidiram seguir e não vou alterar tudo o que está para trás. “The trouble with programmers is that you can never tell what a programmer is doing until it’s too late.”(Seymour Cray)
KTachyon Posted June 8, 2013 at 12:54 AM Report #511614 Posted June 8, 2013 at 12:54 AM (edited) Pois, mas também não podes atribuir um novo valor a uma variável final, pelo que vais ficar num impasse até decidires alterar o código. Quais são as situações em que é necessário que a variável seja final? Edited June 8, 2013 at 12:54 AM by KTachyon “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now