接口上的Java实例

接口上的Java实例,java,interface,Java,Interface,我有以下处理命令行选项的代码: 我有以下课程: public enum DwelltimeOptions implements IDwelltimeOptions{ public DwelltimeOptions findOption(String s){ return null; } } public interface IDwelltimeOptions extends IOptions{ public void co

我有以下处理命令行选项的代码:

我有以下课程:

public enum DwelltimeOptions implements IDwelltimeOptions{

      public DwelltimeOptions findOption(String s){
             return null;
          }
 }

public interface IDwelltimeOptions extends IOptions{

    public void compare(ReconToolCompare rtc) throws ReconToolException;

}
public interface IOptions {

    public IOptions findOption(String s);

}
问题是我下面的第一个选项变量似乎不是IOptions的实例,尽管我认为应该是

Object firstOption = null;
        try {
             firstOption = Class.forName("com.nim.tools.options."  + capitalize(args.get(0)) + "Options");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        if(firstOption instanceof IOptions){
        secondOption = ((IOptions) firstOption).findOption(args.get(1).substring(1));
        }
        else{
            ReconTool.logError("Unrecognized option: \"" + args.get(0) + "\"");
            ReconTool.printOutOptions();
            System.exit(0);
        }
第一个选项变量是“class com.nim.tools.options.delaytimeoptions”,而delaytimeoptions类实现了IDwelltimeOptions,它扩展了IOptions…所以delaytimeoptions应该是IOptions的一个实例

事实上,我想我刚刚意识到这个问题。firstOption变量实际上是一个类对象,不能在instanceof上下文中使用,也不能与诸如IOOptions之类的接口进行比较?

返回
类的实例,因此在此代码中:

firstOption = Class.forName("com.nim.tools.options."  + capitalize(args.get(0)) + "Options");
如果您在
args.get(0)
中传递的参数是
I
,并且您有
IOptions
,那么
firstOption
Class
相同,而不是实现
IOption
接口的对象实例

firstOption变量实际上是一个类对象,不能在instanceof上下文中使用,也不能与诸如IOptions之类的接口进行比较

是的,您的假设是正确的。

返回
类的实例,因此在此代码中:

firstOption = Class.forName("com.nim.tools.options."  + capitalize(args.get(0)) + "Options");
如果您在
args.get(0)
中传递的参数是
I
,并且您有
IOptions
,那么
firstOption
Class
相同,而不是实现
IOption
接口的对象实例

firstOption变量实际上是一个类对象,不能在instanceof上下文中使用,也不能与诸如IOptions之类的接口进行比较

是的,您的假设是正确的。

返回
类的实例,因此在此代码中:

firstOption = Class.forName("com.nim.tools.options."  + capitalize(args.get(0)) + "Options");
如果您在
args.get(0)
中传递的参数是
I
,并且您有
IOptions
,那么
firstOption
Class
相同,而不是实现
IOption
接口的对象实例

firstOption变量实际上是一个类对象,不能在instanceof上下文中使用,也不能与诸如IOptions之类的接口进行比较

是的,您的假设是正确的。

返回
类的实例,因此在此代码中:

firstOption = Class.forName("com.nim.tools.options."  + capitalize(args.get(0)) + "Options");
如果您在
args.get(0)
中传递的参数是
I
,并且您有
IOptions
,那么
firstOption
Class
相同,而不是实现
IOption
接口的对象实例

firstOption变量实际上是一个类对象,不能在instanceof上下文中使用,也不能与诸如IOptions之类的接口进行比较

是的,您的假设是正确的。

是的,返回表示类的
对象,而不是类的实例。因此,对于
(和
对象
),只有
instanceof
将返回
true
。如果您想知道该类是否实现了接口(或超类),并且您拥有相关的
对象,那么您可以使用

确定此类对象表示的类或接口是否与指定的类参数表示的类或接口相同,或者是其超类或超接口。如果是,则返回true;否则返回false

是,返回表示类的
对象,而不是类的实例。因此,对于
(和
对象
),只有
instanceof
将返回
true
。如果您想知道该类是否实现了接口(或超类),并且您拥有相关的
对象,那么您可以使用

确定此类对象表示的类或接口是否与指定的类参数表示的类或接口相同,或者是其超类或超接口。如果是,则返回true;否则返回false

是,返回表示类的
对象,而不是类的实例。因此,对于
(和
对象
),只有
instanceof
将返回
true
。如果您想知道该类是否实现了接口(或超类),并且您拥有相关的
对象,那么您可以使用

确定此类对象表示的类或接口是否与指定的类参数表示的类或接口相同,或者是其超类或超接口。如果是,则返回true;否则返回false

是,返回表示类的
对象,而不是类的实例。因此,对于
(和
对象
),只有
instanceof
将返回
true
。如果您想知道该类是否实现了接口(或超类),并且您拥有相关的
对象,那么您可以使用

确定此类对象表示的类或接口是否与指定的类参数表示的类或接口相同,或者是其超类或超接口。如果是,则返回true;否则返回false



Class.forName
返回一个
Class
对象。好的,您需要使
firstOption=Class.forName(“yada-yada”).newInstance()
如果你想用
实例检查它,那么@azurefrog
IOption
是一个接口,所以你不能用这种方法创建一个新的实例。但是他不是为
IOption
获取类,而是为实现该接口的
驻留时间选项
获取类。你不能新建一个枚举实例吗?@azurefrog哦,没有读到问题的那部分。没错
Class.forName
返回一个
Class
对象。对,