3. Apex基础
在本章中,我们将深入研究Apex编程语言的基础知识。Apex是一种强大的编程语言,特别为Salesforce平台设计,用于实现自定义业务逻辑和扩展Salesforce功能。无论您是否具备编程经验,我们将从头开始,逐步介绍Apex的核心概念。
3.1 数据类型与变量(参考Data Types and Variables)
在编程中,数据类型是一种重要的概念,用于定义变量和常量的类型以及如何在内存中存储和处理数据。Apex支持多种数据类型,我们将首先了解基本数据类型。
3.1.1 基本数据类型
1.整数(Integer): 用于表示整数值。
Integer myInteger = 42;
2.小数(Decimal): 用于表示包含小数部分的数字。
Decimal myDecimal = 3.14;
3.字符串(String): 用于表示文本数据。
String myString = 'Hello, World!';
4.布尔(Boolean): 用于表示逻辑值,只能是 true 或 false。
Boolean isTrue = true;
5.日期(Date): 用于表示日期。
Date myDate = Date.today();
6.日时(Datetime): 用于表示日期和时间。
Datetime myDatetime = Datetime.now();
7.ID: 用于表示Salesforce记录的唯一标识。
Id recordId = '0012e00000ABCDEF123';
8.SObject: 用于表示Salesforce对象。
Account myAccount = new Account(Name='My Company');
9.Blob: 用于表示二进制数据。 (在示例中不太容易展示,通常用于处理二进制文件)
3.1.2 集合数据类型(List, Set, Map)
这些是Apex中的一些常见集合数据类型。它们用于处理和操作多个值,每种类型都有其特定的用途。
在编写Apex代码时,选择正确的集合类型对于有效地解决问题非常重要。
List(列表)
List 是一种有序的集合,用于存储多个值。这些值可以是相同的数据类型或不同的数据类型。在List中,元素的顺序非常重要,你可以通过索引来访问它们。
// 创建一个整数类型的List
List<Integer> numbers = new List<Integer>{1, 2, 3, 4, 5};
// 访问List中的元素
Integer firstNumber = numbers[0];
Set(集合)
Set 是一种无序的集合,用于存储一组唯一的值。这意味着在Set中,不会有重复的元素。
// 创建一个字符串类型的Set
Set<String> fruits = new Set<String>{'apple', 'banana', 'orange', 'apple'};
// Set中不包含重复的元素,所以fruits大小为3
Integer setSize = fruits.size();
Map(映射)
Map 是一种键值对的集合,每个键都与一个值相关联。这使得Map非常适合存储和检索与特定键相关联的数据。
// 创建一个Map,将国家与首都关联起来
Map<String, String> countryToCapital = new Map<String, String>{
'USA' => 'Washington, D.C.',
'France' => 'Paris',
'Japan' => 'Tokyo'
};
// 通过键获取值
String capitalOfFrance = countryToCapital.get('France');
对于Map, 我曾经写过另一篇文章,介绍了一些使用技巧,欢迎阅读:
【探索Apex开发之】 使用Map时的几个技巧,让你的代码更高效
3.1.3 自定义数据类型
在Apex中,你有机会创建自己的自定义数据类型,这些类型可以用于更好地组织和管理你的数据。以下是一些常见的自定义数据类型:
1. 枚举(Enum)
枚举 是一种自定义数据类型,用于定义一组命名的常量值。它们非常适合表示那些只有有限数量选项的数据,例如状态或类型。
// 定义一个枚举类型,表示一周的每一天
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
// 声明一个变量使用枚举类型
Day today = Day.WEDNESDAY;
2. 类(Class)
类 是一种自定义数据类型,用于创建自己的对象。你可以在类中定义属性(数据)和方法(行为)。这对于表示真实世界中的事物非常有用。
// 定义一个简单的类,表示一本书
public class Book {
public String title;
public String author;
public Integer pageCount;
public Book(String bookTitle, String bookAuthor, Integer pages) {
title = bookTitle;
author = bookAuthor;
pageCount = pages;
}
public String getBookInfo() {
return 'Title: ' + title + ', Author: ' + author + ', Pages: ' + pageCount;
}
}
// 创建一个Book对象
Book myBook = new Book('The Great Gatsby', 'F. Scott Fitzgerald', 180);
// 调用类中的方法
String bookInfo = myBook.getBookInfo();
3. 接口(Interface)
接口 定义了一组方法,任何实现该接口的类都必须实现这些方法。接口通常用于确保类具有特定行为。
// 定义一个接口,表示可发送邮件的类必须实现sendEmail方法
public interface EmailSender {
void sendEmail(String to, String subject, String body);
}
// 实现接口的类必须提供sendEmail方法的具体实现
public class EmailService implements EmailSender {
public void sendEmail(String to, String subject, String body) {
// 实现发送邮件的逻辑
}
}