Cita:
Iniciado por LuisChavezB Puedes utilizar anotaciones:
Código Javascript
:
Ver original/*
* Copyright 2012 Leviathan.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package mx.com.leviathan.data.filter;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
*
* @author Leviathan
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Filter {
String author();
String name();
String version();
}
Código Javascript
:
Ver original/*
* Copyright 2012 Leviathan.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package mx.com.leviathan.data.filter;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
*
* @author Leviathan
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface FilterFunction {
String[] params();
Class<?>[] paramTypes();
Class<?> returnType();
}
Aplicarlas:
Código Javascript
:
Ver original@Filter(author = "Leviathan", version = "0.1", name = "Example")
public class FilterExample {
@FilterFunction(params = {"firstName", "lastName"}, paramTypes = {String.class, String.class}, returnType = String.class)
public String testString(String firstName, String lastName) {
return firstName + lastName;
}
}
y por medio de reflexión trabajar con la información proporcionada en las anotaciones.
Uhh... XD no conocia eso de las anotaciones.
Miro a ver y te cuento...
Lo que he consegido, que me funciona parcialmente, es esto:
En main:
Código:
String str = "HELLO";
Diodo dod;
dod=new Diodo("","",0,"","");
try {
Method method = str.getClass().getMethod("toString"); //getMethod("toString", null);
Object retVal = method.invoke(str); //invoke(str, null);
System.out.println(retVal);
} catch ...............(a lot of catchs xd)
Este codigo, sea con 'str.getClass()...' y 'method.invoke(str)' tratando de obtener el toString de un String, o con 'dod.getClass()...' y 'method.invoke(dod)' tratando de obtener uno de los metodos de la clase Diodo, funcionan bien, pero cuando trato de obtener un metodo de 'aClass', declarado como
, e instanciado con:
Código:
aClass= classLoader.loadClass("componentespkg.cat2.Diodo");
, que deberia ser en este caso la clase Diodo, no funciona y me devuelve la excepcion
Código:
java.lang.NoSuchMethodException: java.lang.Class.toCB2CB()
at java.lang.Class.getMethod(Class.java:1622)
at inventarionb.InventarionbTEST.main(InventarionbTEST.java:83)
Hay una cosa, no se si tiene algo que ver con el error, cuando pone java.lang.Class.toCB2CB() en la excepcion. ¿Esa ruta es correcta? No creo que el metodo de mi clase derive del metodo Class, pero no sabria que poner... en el caso de que la clase se encuentre dentro de la clase principal, donde esta el main, no hay que poner mas cosas, pero lo mismo al estar fuera hay que poner algo en la ruta... no he conseguido que me funcione poniendo la sucesion de packages (separada por '.')