项目中有时候会要求通过sObject的Field的type类型返回其对应的基本类型,然后对其进行相关的处理,创建sObject的field可以选择的type类型是固定多的。

上述类型可以转换成几种基本类型:Boolean、Date、Datetime、Double、Integer、String、Time。

1.封装Primitive枚举类:封装基本类型

 public enum Primitive {
TYPE_BOOLEAN,
TYPE_DATE,
TYPE_DATETIME,
TYPE_DOUBLE,
TYPE_INTEGER,
TYPE_STRING,
TYPE_TIMEOFDAY,
TYPE_UNKNOW
}

2.创建PrimitiveHelper帮助类:通过字段的DataType返回相关的基本类型

 public without sharing class PrimitiveHelper {

     public static Primitive getPrimitiveTypeByField(String sObjectName,String fieldName) {
Schema.DisplayType fieldType = getFieldDisplayType(sObjectName,fieldName);
if(fieldType == Schema.Displaytype.BOOLEAN){
return Primitive.TYPE_BOOLEAN;
}
else if(fieldType == Schema.Displaytype.BASE64 || fieldType == Schema.Displaytype.COMBOBOX || fieldType == Schema.Displaytype.EMAIL ||
fieldType == Schema.Displaytype.ENCRYPTEDSTRING || fieldType == Schema.Displaytype.ID || fieldType == Schema.Displaytype.MULTIPICKLIST ||
fieldType == Schema.Displaytype.PHONE || fieldType == Schema.Displaytype.PICKLIST || fieldType == Schema.Displaytype.REFERENCE ||
fieldType == Schema.Displaytype.STRING || fieldType == Schema.Displaytype.TEXTAREA || fieldType == Schema.Displaytype.URL){
return Primitive.TYPE_STRING;
}
else if(fieldType == Schema.Displaytype.CURRENCY || fieldType == Schema.Displaytype.DOUBLE || fieldType == Schema.Displaytype.PERCENT){
return Primitive.TYPE_DOUBLE;
}
else if(fieldType == Schema.Displaytype.INTEGER){
return Primitive.TYPE_INTEGER;
}
else if(fieldType == Schema.Displaytype.DATE){
return Primitive.TYPE_DATE;
}
else if(fieldType == Schema.Displaytype.DATETIME){
return Primitive.TYPE_DATETIME;
}
else {
throw new MyException('无对应的基础类型');
}
} private static Schema.DisplayType getFieldDisplayType(String sObjectName,String fieldName) {
List<Schema.DescribeSObjectResult> sObjectTypes = Schema.describeSObjects(new String[]{sObjectName});
if(sObjectTypes == null || sObjectTypes.size() == 0) {
throw new MyException('无此Object Name');
}
Schema.DescribeSObjectResult sObjectDescribeResult = sObjectTypes.get(0);
Map<String,Schema.SObjectField> objectFieldMap = sObjectDescribeResult.fields.getMap();
Schema.SObjectField objectField = objectFieldMap.get(fieldName);
if(objectField == null) {
throw new MyException('无此Field Name');
}
Schema.DescribeFieldResult fieldResult = objectField.getDescribe(); return fieldResult.getType();
} private class MyException extends Exception{}
}

效果:

1.存在的相关字段的基本类型

2.不存在的字段的结果显示

总结:此篇用于通过sObject的字段来判断此字段属于哪种基本类型,然后可以通过的基本类型对其进行相关操作。有错误的地方欢迎留言。

salesforce 零基础学习(五十八)通过sObject的field返回其对应的基础类型的更多相关文章

  1. salesforce 零基础学习(十八)WorkFlow介绍及用法

    说起workflow大家肯定都不陌生,这里简单介绍一下salesforce中什么情况下使用workflow. 当你分配许多任务,定期发送电子邮件,记录修改时,可以通过自动配置workflow来完成以上 ...

  2. Java基础学习笔记十八 异常处理

    什么是异常?Java代码在运行时期发生的问题就是异常. 在Java中,把异常信息封装成了一个类.当出现了问题时,就会创建异常类对象并抛出异常相关的信息(如异常出现的位置.原因等). 异常的继承体系 在 ...

  3. JSTL标签引入(web基础学习笔记十八)

    一.JSTL包下载和引入 1.0.简介 JSTL全名为JavaServer Pages Standard Tag Library 1.1.下载包 下载地址:http://archive.apache. ...

  4. 学习笔记:CentOS7学习之十八:Linux系统启动原理及故障排除

    目录 学习笔记:CentOS7学习之十八:Linux系统启动原理及故障排除 18.1 centos6系统启动过程及相关配置文件 18.1.1 centos6系统启动过程 18.1.2 centos6启 ...

  5. python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置

    python3.4学习笔记(十八) pycharm 安装使用.注册码.显示行号和字体大小等常用设置Download JetBrains Python IDE :: PyCharmhttp://www. ...

  6. MyBatis基础入门《十八》动态SQL(if-where)

    MyBatis基础入门<十八>动态SQL(if-where) 描述: 代码是在<MyBatis基础入门<十七>动态SQL>基础上进行改造的,不再贴所有代码,仅贴改动 ...

  7. Python基础学习五

    Python基础学习五 迭代 for x in 变量: 其中变量可以是字符串.列表.字典.集合. 当迭代字典时,通过字典的内置函数value()可以迭代出值:通过字典的内置函数items()可以迭代出 ...

  8. “全栈2019”Java第五十八章:多态中方法返回类型可以是子类类型

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  9. 最全的MySQL基础【燕十八传世】

    1.课前准备! 开启mysql服务:1).配置环境变量;2).net start mysql 将该sql文件导入到你的数据库中,以下所有操作都是基于该数据库表操作的!!! [此笔记是本人看着视频加上自 ...

随机推荐

  1. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  2. 用CIL写程序:你好,沃尔德

    前言: 项目紧赶慢赶总算在年前有了一些成绩,所以沉寂了几周之后,小匹夫也终于有时间写点东西了.以前匹夫写过一篇文章,对CIL做了一个简单地介绍,不过不知道各位看官看的是否过瘾,至少小匹夫觉得很不过瘾. ...

  3. macOS 我的装机

    最近多次配置 Mac 的开发环境,稍微记录一下 1 创建无付费信息的Apple ID 2 Xcode ​ gem 源更改 3 Alfred 4 微信 5 SourceTree 6 Sublime Te ...

  4. 获取Canvas当前坐标系矩阵

    前言 在我的另一篇博文 Canvas坐标系转换 中,我们知道了所有的平移缩放旋转操作都会影响到画布坐标系.那在我们对画布进行了一系列操作之后,怎么再知道当前矩阵数据状态呢. 具体代码 首先请看下面的一 ...

  5. .Net Core MVC 网站开发(Ninesky) 2.2、栏目管理功能-System区域添加

    在asp或asp.net中为了方便网站的结构清晰,通常把具有类似功能的页面放到一个文件夹中,用户管理功能都放在Admin文件夹下,用户功能都放在Member文件夹下,在MVC中,通常使用区域(Area ...

  6. 开源一个跨平台运行的服务插件 - TaskCore.MainForm

    本次将要很大家分享的是一个跨平台运行的服务插件 - TaskCore.MainForm,此框架是使用.netcore来写的,现在netcore已经支持很多系统平台运行了,所以将以前的Task.Main ...

  7. OpenGL超级宝典笔记----框架搭建

    自从工作后,总是或多或少的会接触到客户端3d图形渲染,正好自己对于3d图形的渲染也很感兴趣,所以最近打算从学习OpenGL的图形API出发,进而了解3d图形的渲染技术.到网上查了一些资料,OpenGL ...

  8. ABAP单元测试最佳实践

    本文包含了我在开发项目中经历过的实用的ABAP单元测试指导方针.我把它们安排成为问答的风格,欢迎任何人添加更多的Q&A's,以完成这个列表. 在我的项目中,只使用传统的ABAP report. ...

  9. Android开发学习—— shape标签的使用

    参考这片文章http://www.cnblogs.com/armyfai/p/5912414.html

  10. Android中Activity运行时屏幕方向与显示方式详解

    现在我们的手机一般都内置有方向感应器,手机屏幕会根据所处位置自动进行横竖屏切换(前提是未锁定屏幕方向).但有时我们的应用程序仅限在横屏或者竖屏状态下才可以运行,此时我们需要锁定该程序Activity运 ...