16. september 2005 - 12:54Der er
3 kommentarer og 1 løsning
Få en Class ud fra en generisk type
Jeg har en metode som starter som følger: public <T> void delete(T deleteObject){
Herefter skal jeg bruge en Class til at kalde lave klassen public class Query<T> implements QueryInterface<T> { med constructor public Query(Class<T> searchFor){
Her er så problemet. Hvis jeg kalder deleteObject.getClass() får jeg en Class<? extends Object>, og det påstår min compiler, at constructoren ikke duer til. Med andre ord, får jeg fejlen "The constructor Query<T>(Class<? extends Object>) is undefined"
Er der nogen der kan fortælle mig, hvordan jeg får en klasse som kan bruges til denne constructor, uden at skulle sende den med som argument til min delete-metode?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Selvfølgelig. Her kommer noget kode. Problemet kommer ifølgende metode i linien Query<T> query = new Query<T>(c); hvor warningen kommer på c.
public <T> void delete(T deleteObject) throws ... { Vector<T> v = new Vector<T>(); v.add(deleteObject); AnalysisInterface ai = new Analysis(); Vector<ObjectDescriptor> objects = ai.analyse(v); int oid = objects.get(0).getOid(); Class c = deleteObject.getClass(); Query<T> query = new Query<T>(c); try { query.addCriteria("oid", Query.EQUAL, Integer.toString(oid)); } catch (IllegalQueryException e) { Log.getInstance().write(e+" made by the delete()"); e.printStackTrace(); } delete(query); }
Og det vil nok også hjælpe at få lidt kode fra query-klassen: public class Query<T> implements QueryInterface<T> { public Query(Class<T> searchFor){ this.searchFor = searchFor; criterias = new Vector<SearchCriteria>(); orderBy = new Vector<SearchCriteria>(); uniOp = new Vector<SearchCriteria>(); } ... }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.