Java中使用Object对象,怎么获取对应类的方法 代码如下:

Java中使用Object对象,怎么获取对应类的方法 代码如下:,第1张

你创建数组的时候用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使用什么方法可以获得变量的数据类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9731729.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存