Questão nº 41
Questão de Tecnologia da Informação · FCC TRT24 2016 (nº 41)
Considere os seguintes comandos da linguagem Groovy para criar um array chamado `tribunais`:
I. `String[] tribunais = ["TRT", "TRE", "TCU"]`
II. `def tribunais = ["TRT", "TRE", "TCU"] as String[]`
III. `def tribunais = (String[]) ["TRT", "TRE", "TCU"]`
IV. `def tribunais = ["TRT", "TRE", "TCU"] .toString(new Array())`
Estão corretas as formas utilizadas APENAS em
- AI, II e III. (alternativa correta)
- BII e IV.
- CI e III.
- DII, III e IV.
- EI e IV.
Resposta comentada
Gabarito Alternativa A
Em Groovy, um array é uma coleção de itens do mesmo tipo e com tamanho fixo, similar ao Java. Existem várias maneiras flexíveis de declará-los, aproveitando a tipagem dinâmica e a coerção de tipos da linguagem.
- (A) Correta: Esta é a alternativa correta, pois as formas I, II e III são métodos válidos para criar um array de Strings em Groovy.
- I. Correta:
String[] tribunais = ["TRT", "TRE", "TCU"]
Esta é uma declaração de array explícita, similar ao Java. O literal de lista Groovy["TRT", "TRE", "TCU"]é automaticamente convertido para umString[]porque o tipo da variáveltribunaisfoi declarado comoString[]. - II. Correta:
def tribunais = ["TRT", "TRE", "TCU"] as String[]
Aqui,defpermite a inferência de tipo. O operadorasrealiza uma coerção de tipo, convertendo ajava.util.ArrayList(que é o tipo padrão de um literal de lista Groovy) para umString[]. Esta é uma forma idiomática e comum de criar arrays em Groovy. - III. Correta:
def tribunais = (String[]) ["TRT", "TRE", "TCU"]
Similar à forma II, mas usando um cast de tipo estilo Java(String[]). O literal de lista é explicitamente convertido para umString[]. Groovy é capaz de realizar essa conversão de uma lista de Strings para um array de Strings.
- I. Correta:
- (B) Incorreta: A alternativa IV está incorreta.
- (C) Incorreta: A alternativa II também está correta.
- (D) Incorreta: A alternativa IV está incorreta.
- (E) Incorreta: A alternativa IV está incorreta, e a alternativa II também está correta.
- IV. Incorreta:
def tribunais = ["TRT", "TRE", "TCU"] .toString(new Array())
Esta forma está incorreta por vários motivos. Primeiro, o método.toString()em umjava.util.ArrayList(que é o tipo de["TRT", "TRE", "TCU"]) não aceita argumentos. Segundo, mesmo que aceitasse,new Array()não é uma sintaxe válida para criar uma instância de array em Groovy/Java. O objetivo do.toString()é obter a representação em String de um objeto, não criar um array. Armadilha da banca: A menção deArray()etoString()pode induzir ao erro, mastoString()não cria um array, e a sintaxenew Array()é inválida.
- IV. Incorreta:
Fonte: FCC TRT24 2016 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.