我有一个简单的类Apple从另一个简单的类Fruit继承而来。
在运行时,我可以使用
Fruit fruit = new Apple();
fruit.getClass();
获取水果对象的实际类型,即Apple.class。
我还可以使用fruit instanceof Apple
,并fruit instanceof Fruit
验证该水果对象是否是Apple或Fruit的实例。这两个表达式都返回true,这是正常的。
但是,有没有一种方法可以精确地确定声明的fruit
标识符类型?在这种情况下是哪个Fruit
。
您实际上是在问有关变量声明的问题,fruit
而不是对象的实际运行时类型(Apple
在这种情况下为)。
我认为这通常是一个坏主意:您只是声明了变量,并告诉编译器它为a Fruit
,那么为什么现在需要找出这个变量?
只是要使事情更加混乱,值得注意的是,您还可以具有多个具有不同声明类型的变量来引用同一对象(仍然是Apple):
Fruit fruit = new Apple(); // fruit declared as Fruit, but refers to an Apple
Object thing = fruit; // thing declared as Object, refers to the same Apple
如果您真的想找出已声明的类型,则可以选择以下几种方法:
fruit
一个实例变量,并使用反射查询声明的类型。我认为所有这些都很难看,所以我的一般建议是“不要这样做”。
我使用Identityserver3作为MVC应用程序的授权服务器。因此,我的类如下: 这是我的子类: 这是我的: 但是在我的
我还在尝试将我的应用程序从WSO2IS-5.2.0迁移到WSOIS-5.3.0。我的应用程序是一个管理用户的rest api,我称之为wso2is soap WebServices。 在5.3.0中,我似乎不能用webservice修改identity/AccountLocked或identity/FailedLoginAttempts等标识声明 tid:1[2017-01-19 10:42:26
我正在分析ASTNodes(org.eclipse.jdt.core.dom),并试图找到我拥有的变量节点(SimpleName)的VariableDeclaration。示例: 我还需要一个解决方案,可以找到声明,如果它是一个类字段。
我正在调试一个非常大的树着色项目,在该项目中,作者使用glsl文件来着色树,但我在编译glsl文件时遇到了麻烦: 以下是错误日志: 我使用mac osx,Xcode7.0,OpenGL和glut都是默认版本。Glew版本是1.13.0。 这是因为版本与作者使用的原始版本不匹配吗?因为我检查了原始版本,所以他使用了GLEW 1.9.0和GLUT 3.7.6。 //////更新/////// 原来ma
我正在使用SODA for Java存储和检索Oracle12c DB中的文档。我正在效仿这个例子。 这一例外背后的原因将是什么?
这是我的程序: