简单的Trailhead Challenge(返回字符串数组的类)错误:方法不可见:

时间:2017-09-21 17:49:59

标签: java apex

在学校里花了很多时间学习Java和C ++之后,我正在努力学习Apex。在以前的生活中,我是SFDC的重度用户,并帮助当时为我们的组织选择了它。所以Apex似乎是一种自然的进步。

在这个过程中,我正试图完成这些"小道挑战"。第一个是Create a Apex类,它返回一个字符串数组(或列表):

  1. 创建一个返回格式化字符串数组(或列表)的Apex类('测试0','测试1',...)。
  2. 数组的长度由整数参数决定。必须调用Apex类。
  3. ' StringArrayTest'并在公共范围内。
  4. Apex类必须有一个名为' generateStringArray'的公共静态方法。 ' generateStringArray'方法必须返回一个字符串数组(或列表)。每个字符串的格式必须为“测试n'其中n是数组中当前字符串的索引。返回字符串的数量由" generateStringArray'的整数参数指定。方法
  5. SFDC Developer控制台中的代码......

    public class StringArrayTest
    {
        public static String [] generateStringArray(integer size)
        {   
            String [] locStrArray = new String [size];
    
            //set values in array...
            for (integer i = 0; i < size; i++)
            {
                locStrArray[i] = 'Test ' + i;
            }    
    
            //display array...
            for (integer i = 0; i < size; i++)
            {
                System.debug(locStrArray[i]);       //when in doubt, system out...
            }   
    
            return locStrArray;
        }
    }
    

    打开执行匿名窗口中的代码...

    integer size =10;
    String [] strArray = new String [size];
    strArray = StringArrayTest.generateStringArray(size);
    
            for (integer i = 0; i < size; i++)
            {
                strArray[i] = 'Test ' + i;
                system.debug('B ' + strArray[i]);      //when in doubt, system out...
            }
    

    以下是我遇到的访问违规行为......

    Line: 3, Column: 28
    Method is not visible: void StringArrayTest.generateStringArray(Integer)
    

    此功能适用于Netbeans,system.debug()替换为system.out.println()

    这个挑战可能甚至不再有效,因为我去年春天开始,然后直到现在。大多数情况下,我只是想了解其在线IDE相对于其他IDE所具有的怪癖的行为。这似乎是一个非常简单的程序,应该非常简单。是否有背景规则在起作用?

    screen shot

2 个答案:

答案 0 :(得分:0)

您的班级有自定义命名空间吗?我假设,匿名窗口中的代码可能在没有命名空间的情况下在某个内部SF类中编译,在这种情况下,您的公共类(在您的自定义命名空间下)将不可用。如果是这样,请尝试将班级的“公共”更改为“全局”。

答案 1 :(得分:-1)

public class StringArrayTest {

    public static List<String> generateStringArray(Integer n){
        List<String> strings = new List<String>();
        integer count = 0;
        While(count < n){
        strings.add('Test ' + count);
        count ++;
        }
        System.debug(strings);
        return strings;
    }
}