Por enquanto está assim, e está dando os erros abaixo.
Alguma ideia? obrigado
//Human.java
package multiplosobjetos;
public class Human {
private String name;
public Human(){
name="";
}
public Human(String name)
{
}
public String getName()
{
return this.name;
}
public void setName(String name)
{
this.name=name;
}
}
//Woman.java
package multiplosobjetos;
import java.awt.List;
import java.util.ArrayList;
public class Woman extends Human {
public void TestaHumanos() {
List<Woman> women = new ArrayList<Woman>();
List<Man> men = new ArrayList<Man>();
for(int i = 0; i < 100; i++)
{
womans.add(new Woman());
men.add(new Man());
}
}
}
//Man.java
package multiplosobjetos;
public class Man extends Human {
}
//Erros
Description Resource Path Location Type
The type List is not generic; it cannot be parameterized with arguments <Man> Woman.java /LabJavaSE16/src/multiplosobjetos line 10 Java Problem
The type List is not generic; it cannot be parameterized with arguments <Woman> Woman.java /LabJavaSE16/src/multiplosobjetos line 9 Java Problem
womans cannot be resolved Woman.java /LabJavaSE16/src/multiplosobjetos line 15 Java Problem
//...
womans.add(new Woman()); //Aqui é women, senão nem compila.
//...
[/quote]
Se a a lista womans for do tipo java.util.List, sim.
A questão é que, ao criar um novo objeto Woman, você terá todos os atributos de woman nulos…
[quote=fasts]Eu sei, mas ali no código “womans” não está declarado. Não vai nem compilar.
Ele declarou como “women” e “men”. Não existe “womans” no código.[/quote]
Nem me liguei nisso
Obrigado!
É verdade, estava com problema no import, que agora foi mudado para
import java.util.List;
Mas ao continuar o exemplo, está dando novos erros que não consegui resolver. Alguém?
//Woman.java
package multiplosobjetos;
public class Woman extends Human {
//Woman.java
package multiplosobjetos;
public class Woman extends Human {
}
package multiplosobjetos;
import java.util.ArrayList;
import java.util.List;
public class TestaHumanos {
public static void main(String argsv[]) {
List<Woman> women = new ArrayList<Woman>();
List<Man> men = new ArrayList<Man>();
for(int i = 0; i < 100; i++)
{
women.add(new Woman());
men.add(new Man());
}
}
public static List<Human> getInstances(Class<? extends Human> clazz, int counter)
{
List humans = new ArrayList<Human>();
for(int i=0;i< counter; i++)
{
humans.add(clazz.newInstance());
}
return humans;
}
}
//Man.java
package multiplosobjetos;
public class Man extends Human {
}
//erros
Description Resource Path Location Type
Unhandled exception type IllegalAccessException TestaHumanos.java /LabJavaSE16/src/multiplosobjetos line 27 Java Problem
Unhandled exception type InstantiationException TestaHumanos.java /LabJavaSE16/src/multiplosobjetos line 27 Java Problem
List is a raw type. References to generic type List<E> should be parameterized TestaHumanos.java /LabJavaSE16/src/multiplosobjetos line 22 Java Problem
Type safety: The expression of type List needs unchecked conversion to conform to List<Human> TestaHumanos.java /LabJavaSE16/src/multiplosobjetos line 31 Java Problem
Type safety: The method add(Object) belongs to the raw type List. References to generic type List<E> should be parameterized TestaHumanos.java /LabJavaSE16/src/multiplosobjetos line 27 Java Problem
Obrigado novamente. Agora deu um erro de execução. Seguem classes atualizadas e erro.
//Human.java
package multiplosobjetos;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
public class Human {
private String name;
private int idHumano;
public Human(){
name="";
}
public Human(String name)
{
this.name = name;
idHumano = 0;
}
public Human(Integer idHumano)
{
name="";
this.idHumano = idHumano;
}
public String getName()
{
return this.name;
}
public void setName(String name)
{
this.name=name;
}
public int getidHumano() {
return idHumano;
}
public void setContador(int idHumano) {
this.idHumano = idHumano;
}
public static List<Human> gerarHumanos(Class<? extends Human> clazz, int counter)
{
List<Human> humans = new ArrayList<Human>();
int i=0;
//Usando construtor padrao
for(i=0;i< counter && i < 1; i++)
{
try {
humans.add(clazz.newInstance());
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//Usando construtor que inicia idHumano
for(;i< counter; i++)
{
try {
humans.add(clazz.getDeclaredConstructor(Integer.class).newInstance(i));
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return humans;
}
}
//Man.java
package multiplosobjetos;
public class Man extends Human {
}
package multiplosobjetos;
import java.util.ArrayList;
import java.util.List;
public class TestaHumanos {
public static void main(String argsv[]) {
//Modo antigo
// List<Woman> women = new ArrayList<Woman>();
// List<Man> men = new ArrayList<Man>();
//
//
// for(int i = 0; i < 100; i++)
// {
// women.add(new Woman());
// men.add(new Man());
// }
//Modo usando gerador de Humanos
List<Human> man = Human.gerarHumanos(Man.class,10);
List<Human> woman = Human.gerarHumanos(Woman.class,10);
}
}
//Woman.java
package multiplosobjetos;
public class Woman extends Human {
}
Erro em tempo de execução
java.lang.NoSuchMethodException: multiplosobjetos.Man.<init>(java.lang.Integer)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getDeclaredConstructor(Unknown Source)
at multiplosobjetos.Human.gerarHumanos(Human.java:71)
at multiplosobjetos.TestaHumanos.main(TestaHumanos.java:21)