文档章节

Apex 类与访问修饰符 权限(一)

在山的那边
 在山的那边
发布于 2016/07/17 19:46
字数 948
阅读 223
收藏 1

Apex 类的定义与Java相同,通过class 关键字标识。

1) 每个Top类必须要有修饰符,否则不能通过编译。

    (Compile Error for Test.cls: Top-level type must have public or global visibility at line 1         column 7)

2)内部类可以不写修饰符(私有)。

3) 可选virtual, abstract  表明当前类为抽象类

4)和Java一样,可通过implements关键字实现多个接口,通过extends单继承父类

5)类名不能和SF的关键字重名如标准对象等(之前一同事遇到一个类的类名和标准对象同名,导致在使用标准对象时,报字段不存在)

类访问修饰符

1    private 不可用在Top 类中,仅可在内部类中使用,外部不可访问
      当new Test 调用my()时,可正确执行,当通过 new Test.InnerClazz时报InnerClazz不  存在

public class Test{
  private class InnerClazz{

  }

  public void my(){
    InnerClazz iclass = new InnerClazz();
    System.debug(iclass);
  }
}

2  public 可在当前应用或者在当前命名空间使用

3  global 任意访问,webService必须是global的,如果一个方法或者内部类为global,则Top类必须为global

4  with sharing/without sharing 当前类权限模式

类定义形式

private | public | global
[virtual | abstract | with sharing | without sharing]
class ClassName [implements InterfaceNameList] [extends ClassName] {
// The body of the class
}

成员变量定义形式

 [public | private | protected | global] [final] [static] data_type variable_name [= value]

类型和变量名为必须,访问修饰可选,不写为private final与static 修饰变量为常量与Java相同

类型:基本类型与自定义类型

Apex 属性:get/set

public Integer prop{
  get {return prop;}
  set {prop = value;}
}

//简写 当只写get时,在本类中也无法给值
public Integer prop{get; set;}

成员方法形式

[public | private | protected | global] [override] [static] data_type method_name (input parameters)
{
// The body of the method
}

1)访问修饰符可选 不写为private

2) override 实现父类的抽象方法

3) static 静态方法,类方法,通过类调用

4) 值类型(基本数据类型如:Integer,String)与引用类型

权限(一)

1)with sharing 当前类遵循SF的共享模型 按SQL语句执行的结果集只查出有权限的数据。

2)without sharing 按SQL语句执行

测试1:当控制类为without sharing 对像所有权限为无,通过VF页面,让无权限的人是否能创建

实际测试后,是可以创建,所有人与创建人均为当前登录者,但是无法通过标准界面查看当前记录(赋值是程序给值)

测试2:当查询后台数据在VF页面展示时,查询日志时,显示获取了数据,前台通过循环时,打印空白。无法查看

当把对象勾选查看时,可以打印出结果,但是字段安全性不可见的字段还是不可见。

测试3:删除一条记录,结果显示可以删除。

测试4:修改一条记录,结果显示可以删除。(赋值是程序给值)

采用without sharing时,可以创建对象,能查询到结果,但是无法在VF页面中显示,当有对象查看权限时,是可以看到标准字段,当字段可见性没有勾选时,仍然是不可见的。

修改和删除能正常工作。(还需要测试的情况有:内部类的权限,当with sharing调用without sharing类的方法时权限,当with sharing extends without sharing 权限,当without sharing extends with sharing)

一般都是with sharing,without sharing解决特殊情况下。如最近遇到在市场活动下,创建报名,报名上的费用通过trigger汇总更新到市场活动上,销售没有市场活动编辑权限,但汇总又需要编辑权限的情况。

(如有错误欢迎指出!Ths)

 

 

 

 

© 著作权归作者所有

在山的那边

在山的那边

粉丝 16
博文 65
码字总数 28911
作品 0
长宁
程序员
私信 提问
Linux上安装oracle application express

虚拟化平台192.168.75.26:用户root,密码CWXT#net 操作系统:OracleLinux-R6-U3-Server-x86_64-dvd.iso Oralce数据库:11.2.0.1x64 JDK:11.2.0.1x64 Tomcat:apache-tomcat-8.5.32 新建虚拟......

youfen
2018/07/27
216
0
在阿里云上打造属于你自己的APEX完整开发环境 (安装CentOS, Tomcat, Nginx)

Oracle APEX 系列文章3:在阿里云上打造属于你自己的APEX完整开发环境 (安装CentOS, Tomcat, Nginx) 本文是钢哥的Oracle APEX系列文章中的第三篇,完整 Oracle APEX 系列文章如下: Oracle A...

youfen
2018/07/27
74
0
Oracle APEX 系列文章4:在阿里云上打造属于你自己的APEX完整开发环境 (安装XE, ORDS, APEX)

Oracle APEX 系列文章4:在阿里云上打造属于你自己的APEX完整开发环境 (安装XE, ORDS, APEX) 本文是钢哥的Oracle APEX系列文章中的第四篇,完整 Oracle APEX 系列文章如下: Oracle APEX 系列...

youfen
04/02
20
0
Oracle APEX 系列文章8:如何从 APEX 5.1.4 升级到最新的 APEX 18.1

本文是钢哥的 Oracle APEX 系列文章的第8篇,完整文章目录如下: Oracle APEX 系列文章1:Oracle APEX, 让你秒变全栈开发的黑科技 Oracle APEX 系列文章2:在阿里云上打造属于你自己的APEX完...

kenny.wang
2018/05/29
0
0
Oracle APEX 系列文章14:Oracle APEX 18.1 Docker 镜像

本文是钢哥的 Oracle APEX 系列文章的第14篇,完整文章目录如下: Oracle APEX 系列文章01:Oracle APEX, 让你秒变全栈开发的黑科技 Oracle APEX 系列文章02:在阿里云上打造属于你自己的APE...

钢钢更新
2018/09/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JAVA 编写redisUtils工具类,防止高并发获取缓存出现并发问题

import lombok.extern.slf4j.Slf4j;import org.springframework.data.redis.core.BoundHashOperations;import org.springframework.data.redis.core.BoundValueOperations;import org.......

huangkejie
26分钟前
3
0
JMM内存模型(一)&volatile关键字的可见性

在说这个之前,我想先说一下计算机的内存模型: CPU在执行的时候,肯定要有数据,而数据在内存中放着呢,这里的内存就是计算机的物理内存,刚开始还好,但是随着技术的发展,CPU处理的速度越...

走向人生巅峰的大路
44分钟前
89
0
你对AJAX认知有多少(2)?

接着昨日内容,我们几天继续探讨ajax的相关知识点 提到ajax下面几个问题又是必须要了解的啦~~~ 8、在浏览器端如何得到服务器端响应的XML数据。 通过XMLHttpRequest对象的responseXMl属性 9、 ...

理性思考
53分钟前
4
0
正则表达式基础(一)

1.转义 转义的作用: 当某个字符在表达式中具有特殊含义,例如字符串引号中出现了引号,为了可以使用这些字符本身,而不是使用其在表达式中的特殊含义,则需要通过转义符“\”来构建该字符转...

清自以敬
56分钟前
4
0
idea中@Data标签getset不起作用

背景:换电脑以后在idea中有@data注解都不生效 解决办法:idea装个插件 https://blog.csdn.net/seapeak007/article/details/72911529...

栾小糖
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部