创建只接受非抽象类类型的java方法
在Java中,是否可以创建一个接受所有非抽象类类型的方法/签名 这是一件很有趣的事:创建只接受非抽象类类型的java方法,java,class,generics,abstract,signature,Java,Class,Generics,Abstract,Signature,在Java中,是否可以创建一个接受所有非抽象类类型的方法/签名 这是一件很有趣的事: public Object getInstance(Class<? extends ConcreteClassSuperType> someNonAbstractClass){ //some logic that can safely assume that the Class object is not an interface type nor an abstract class } pu
public Object getInstance(Class<? extends ConcreteClassSuperType> someNonAbstractClass){
//some logic that can safely assume that the Class object is not an interface type nor an abstract class
}
public Object getInstance(Class因为类可以有多个参数,我认为首先检查类是否具体,然后实现实例化它的方法更容易
public <T> boolean isConcrete(Class<T> c) {
if (c.isInterface() || (c.getModifiers() & Modifier.ABSTRACT) == Modifier.ABSTRACT)
return false;
return true;
}
public boolean isConcrete(c类){
if(c.isInterface()| |(c.getModifiers()&Modifier.ABSTRACT)==Modifier.ABSTRACT)
返回false;
返回true;
}
希望这有帮助
编辑
抱歉,刚才在另一条评论中注意到,您可以简化此操作
public <T> boolean isConcrete(Class<T> c) {
if (c.isInterface() || Modifier.isAbstract(c.getModifiers()))
return false;
return true;
}
public boolean isConcrete(c类){
if(c.isInterface()| |修饰符.isAbstract(c.getModifiers())
返回false;
返回true;
}
不,这是不可能的。你能解释一下你为什么需要这个吗?如果你能展示更大的画面,可能还有另一个解决方案。它接受MyInterface
有什么问题吗?该方法到底应该做什么?我认为你可以直接在方法内部执行检查,如果检查失败,则抛出异常。你可以我认为可以很容易地确定给定的类是接口还是抽象类。类似于:if(clz==null | | | clz.isInterface()| | Modifier.isastract(clz.getModifiers()){抛出新的IllegalArgumentException()}
好吧,不是什么超级具体的东西,只是我在考虑如何创建一些框架或库,从而可以/容易地使用引用方法的注释成员创建注释-MyAnnotation(delegate=MyClass::myMethod)是不可能的。必须传递字符串或(在一些包含FQCN和参数的客户格式中)或可能使用某些类(如我正在考虑的SAM的实现)。不知怎的,这让我想到了上述问题。但感谢您的评论/回答。反思。但前提是您知道自己在做什么。您可以对此进行进一步优化。只需否定条件并返回它即可