【问题标题】:How to call a variable from one java class in a different class如何从不同类中的一个java类调用变量
【发布时间】:2014-05-12 18:01:57
【问题描述】:

我遇到了一个问题,我需要在另一个 java 类中调用在一个 java 类中创建的变量。

课程.java

public class Course {
   public String courseName;

SecondCourse.java

    public class SecondCourse {
        Course courseName;

@Before
    public void setUp() throws Exception {
        courseName = new Course();

尽管我已经这样设置了,但变量调用在 SecondCourse.java 类中不起作用。我错过了什么吗? 你能帮帮我吗?

我正在打电话

driver.findElement(By.xpath("//div/input")).sendKeys(courseName); 

在 SecondCourse.java 类中。 但是给了我错误 org.openqa.selenium.WebElement 中的 sendKeys(java.lang.CharSequence...) 无法应用

【问题讨论】:

  • 您知道SecondCourse 类中的courseNameCourse,而不是CharSequence,对吧?
  • 你能解释一下吗..我不是java的极客或专家:)(只是一个初学者)。我应该在哪里编辑?
  • 你能看看我下面的答案吗?

标签: java webdriver


【解决方案1】:

首先在 Course.java 类中定义

public class Course
{
    public static String courseName; //Define variable as static here
 }

使用类名在任何类中访问该变量

Course.courseName = "abc"; // /Access this variable 

【讨论】:

  • 这样不行,只有Course类是静态的,才可以直接使用类名调用类变量。
  • 即使你声明变量 static 也无济于事,如果 clas 是静态的,那么只有你可以使用这个 "Course.courseName = "abc"; "
  • 类不必是静态的也可以使用静态变量Understanding Class Members
【解决方案2】:

SecondCourseCourse courseName 定义了Course 类型的成员字段 - 它不对应于CourseString courseName。如果需要,您可以使用courseName.courseName 访问存储在courseName CourseSecondCourse 中的Course 对象的courseName 字符串。

【讨论】:

    【解决方案3】:

    简单地说 在 SecondCourse.java 中

           public class SecondCourse {
                Course obj = new Course(); // creates new obj for Course class
    
        @Before
            public void setUp() throws Exception {
                //courseName = new Course(); //You won't need this.
            system.out.println("Here is how your obj can be called "+ obj.courseName);
    }
    

    【讨论】:

      【解决方案4】:

      不能 100% 确定您的总体目标是什么,但这可能会有所帮助。

      public class Course {
          private String courseName;
      
          public Course(String courseName) {
              this.courseName=courseName;
          }
      
          public String getCourseName() {
              return this.courseName;
          }
      }
      
      public class SecondCourse {
          private Course course;
      
          public SecondCourse(String courseName) {
              course=new Course(courseName);
          }
      
          public void setup() {
              String courseName=course.getCourseName();
              /*
               * Do something with courseName
               */
          }
      }
      

      Course 类初始化并授予对其 courseName 变量的访问权限,并且 Second Course 使用 Course 类提供的功能对课程进行额外的工作。

      此外,encapsulation 上的这篇帖子可能很有用。

      【讨论】:

        【解决方案5】:

        使用Course.courseName,您将能够访问其他类变量。希望能帮助到你。谢谢。

        【讨论】:

        • courseName 不是Course 的静态成员。你不能这样称呼它。
        • 你真的,真的真的不应该为了让成员变量更容易调用而将成员变量设为静态。这违反了封装的全部要点。
        • 好的 ..thanks..for d info..will.keep in mind..ten wat is d other was to access it..
        • @AkashGoswami 它违反的不仅仅是封装——它违反了程序的逻辑。问题不在于您如何访问该变量,而在于您是否希望该类的每个实例对该字段都有自己的值。
        猜你喜欢
        • 1970-01-01
        • 2016-08-07
        • 1970-01-01
        • 1970-01-01
        • 2020-06-28
        • 1970-01-01
        • 2021-05-07
        • 2014-12-29
        • 1970-01-01
        相关资源
        最近更新 更多