<commit_before>package br.edu.horus.javabasico2015;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

import org.junit.Before;
import org.junit.Test;

public class ReflectionTest {
	Pedido pedido = new Pedido();
	Item item = new Item("polenta", 4.9d);
	
	@Before
	public void setUp(){
		pedido.limpar();
		pedido.adicionar(item);		
	}

	@Test
	public void testRecuperarMetodos() throws Exception{
		Class<?>[] parametros = new Class<?>[]{Item.class};
		Class<?> tipo = Class.forName("br.edu.horus.javabasico2015.Pedido");
		Method method = tipo.getMethod("remover", parametros);
		method.invoke(pedido, item);
	}
	
	@Test
	public void testConstruir() throws Exception{
		Class<?> tipo = Class.forName("br.edu.horus.javabasico2015.Pedido");
		Constructor<?> constructor = tipo.getConstructor();
		Object pedido = constructor.newInstance();
		Class<?>[] parametros = new Class<?>[]{Item.class};
		Method method = tipo.getMethod("remover", parametros);
		Object retorno = method.invoke(pedido, item);
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
}<commit_msg>Exemplo de set com reflection<commit_after>package br.edu.horus.javabasico2015;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.HashSet;

import org.junit.Before;
import org.junit.Test;

public class ReflectionTest {
	Pedido pedido = new Pedido();
	Item item = new Item("polenta", 4.9d);
	
	@Before
	public void setUp(){
		pedido.limpar();
		pedido.adicionar(item);		
	}

	@Test
	public void testRecuperarMetodos() throws Exception{
		Class<?>[] parametros = new Class<?>[]{Item.class};
		Class<?> tipo = Class.forName("br.edu.horus.javabasico2015.Pedido");
		Method method = tipo.getMethod("remover", parametros);
		method.invoke(pedido, item);
	}
	
	@Test
	public void testConstruir() throws Exception{
		Class<?> tipo = Class.forName("br.edu.horus.javabasico2015.Pedido");
		Constructor<?> constructor = tipo.getConstructor();
		Object pedido = constructor.newInstance();
		Class<?>[] parametros = new Class<?>[]{Item.class};
		Method method = tipo.getMethod("remover", parametros);
		@SuppressWarnings("unused")
		Object retorno = method.invoke(pedido, item);
	}
	
	@Test
	public void testSetPorReflection() throws Exception{
		//TODO limpar a lista de items a força
		Field field = pedido.getClass().getDeclaredField("items");
		field.setAccessible(true);//pq o elemento é privado
		/*
		 * cuidado na hora de setar o valor, nesse caso
		 * pode acontecer um problema pois mudei a estrutura de
		 * dados de List(ArrayList) para Set(HashSet), o mesmo
		 * não vai dar erro pois ambos implementam Collection
		 */
		Collection<Item> value = new HashSet<>();
		field.set(pedido, value);
	}
	
	@Test
	public void testString(){
		String nome = "abc";
		foo(nome);
		System.out.println(nome);
	}
	
	public void foo(String nome){
		nome = "def";
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
}
{'fraction_non_alphanumeric': 0.13480885311871227, 'fraction_numerical': 0.009389671361502348, 'mean_word_length': 3.9633943427620633, 'pattern_counts': {'":': 0, '<': 19, '<?xml version=': 0, '>': 19, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5627643', 'n_tokens_mistral': 1138, 'n_tokens_neox': 1004, 'n_words': 235}