
你创建数组的时候用Circle类创建,别用基类Object。
直接shapers[0]getArea()。就得到了。
你那个没有找到是因为你虽然new的是Circle类的对象进去的,不过是以父类Object类存储的。
需要强转才能调用Circle类的方法。
ClassBase classBase;
if (classBase is ClassA)
{
// classBase 是 ClassA 对象
(classBase as ClassA)DoSomething();
}
else if (classBase is ClassB)
{
// classBase 是 classB 对象
(classBase as ClassB)DoSomething();
}
如上,用 is 运算符和 as 运算符。
通过type of 变量名的方式获取变量的数据类型。
因为js变量是松散类型(即弱类型)的,可以用来保存任何类型的数据,所以用typeof 用来检测给定变量的数据类型,可能的返回值有:
1 'undefined' --- 这个值未定义;
2 'boolean' --- 这个值是布尔值;
3 'string' --- 这个值是字符串;
4 'number' --- 这个值是数值;
5 'object' --- 这个值是对象或null;
6 'function' --- 这个值是函数。
举例:
var aa = 'test string';alert(typeof aa); // 'string'
alert(typeof 90); // 'number'
类名class 的方式更加安全,例如当你要获取一个接口的class时,可以使用 类名class 的方式获取
但此时就不能通过 对象getClass 的方式获取了,因为接口是没有实例对象的,接口只有实现类对象,通过这种方式获取到的是接口的实现类的class,而非是接口的class
再者就是对象声明的类型未必是对象本身真正的类型,通过对象获取class容易产生混乱,因此尽量使用更加安全的方式
请注意看异常信息。未能从“当前”程序集获取“外部”程序集中拥有指定完整限定名的类型。
事实上,直接使用TypeGetType()会从当前程序集,也就是"test3"程序集中查找。
想要查找NHapiModelV23程序集中的类型,请在该程序集上使用GetType
Assembly asmNHapi=AssemblyLoadFrom();Type outerType=asmNHapiGetType();
如果想尽量少的改动自己的代码也成,直接在你的var classes上进行linq查询就好。
Type[] classes=AssemblyLoadFrom()GetTypes();Type tt=classesFirstOrDefault(t=>tFullName="NHapiModelV23GroupORM_001_"+properties[i]);
if(tt!=null)
DoSomething();
最后提醒,请勿使用AssemblyLoad方法,因为该方法已被弃用,请使用LoadFrom和LoadFile来加载外部程序集。
此外,类型的完全限定名和短名并不影响类型的搜索。使用GetType时会从根命名空间开始一层一层查找的,如果各层命名空间下没有重名的类,你甚至没有使用完全限定名的必要。比如上面的代码里可以使用短名进行查找。
Type tt=classesFirstOrDefault(t=>tName="ORM_001_"+properties[i]);刚看到上面的回答,这里我要肯定的告诉你,不管你是用文件方式还是项目引用方式,都不可能使用TypeGetType静态方法获取另一个程序集中的类型,必须在对方的程序集上进行查找!
如果你非要使用TypeGetType静态方法获取其他程序集中的类型,可以使用其的一种重载:
public static SystemType GetType(string typeName, SystemFunc<AssemblyName,Assembly> assemblyResolver, SystemFunc<Assembly,string,bool,Type> typeResolver)该静态方法要求你提供自己的程序集名称解析器和类型名称解析器,非特殊情况不推荐使用。该方法是为了在多个程序集中同时查找多个类型而被微软提供的。
静态方法method(),只能把属性也要设置成static的,才能访问到你的属性
但是你的目的:在方法体内部想获取当前所属类的类型信息
建议你可以这样:举个小例子
class
demo
{
private
int
num;
public
demo(){}
public
int
getNum()
{
return
thisnum;
}//这个方法就很轻松的获取你的属性的信息;
}
o(∩_∩)o希望你明白
主要以下几种方法:
这个MimetypesFileMap类会映射出一个file的Mime Type,这些Mime Type类型是在activationjar包里面的资源文件中定义的
import javaxactivationMimetypesFileTypeMap;import javaioFile;
class GetMimeType {
public static void main(String args[]) {
File f = new File("testgif");
Systemoutprintln("Mime Type of " + fgetName() + " is " +
new MimetypesFileTypeMap()getContentType(f));
// expected output :
// "Mime Type of testgif is image/gif"
}
}
使用 javanetURL
警告:这个方法非常慢
与上面所说的匹配后缀名类似。后缀名和mime-type的映射关系被定义在[jre_home]\lib\content-typesproperties这个文件中
import javanet;
public class FileUtils{
public static String getMimeType(String fileUrl)
throws javaioIOException, MalformedURLException
{
String type = null;
URL u = new URL(fileUrl);
URLConnection uc = null;
uc = uopenConnection();
type = ucgetContentType();
return type;
}
public static void main(String args[]) throws Exception {
Systemoutprintln(FileUtilsgetMimeType("file://c:/temp/testTXT"));
// output : text/plain
}
}
还有一种方式:就是取文件名最后一个“”后的内容,通过人来判断如
String fileName = "aaatxt";
String fileType =“txt”//通过方法取出方法类型为
String type = "";
if( fileTyepequals("txt")){
type = "记事本";
}else if(fileTyepequals("img")){
type = "img";
}。。。。。
以上就是关于Java中使用Object对象,怎么获取对应类的方法 代码如下:全部的内容,包括:Java中使用Object对象,怎么获取对应类的方法 代码如下:、c# 基类怎么获取派生类的 类型、Javascript使用什么方法可以获得变量的数据类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)