![](/img/trans.png)
[英]How can I use variables from a class in another class in Java
[英]How can I use variables that are declared in another class?
我正在自动执行每晚发送的电子邮件。 “发送电子邮件”类包含的变量mailFrom
和mailTo
。 ExcelReader
是先决条件类,可读取将包含电子邮件地址的Excel工作表的单元格。 我需要我的“发送电子邮件”( SendCf
)类来获得它的mailFrom
和mailTo
从变量ExcelReader
类(得到它的从Excel工作表的单元变量)。
目的是让其他人可以使用不同的“收件人” /“发件人”电子邮件地址修改Excel工作表,而我每晚发送的电子邮件将对此进行反映。 因此,我每次发送电子邮件时都需要从Excel工作表中提取信息(也不知道如何使该方法作为电子邮件的先决条件运行)。
首先,我的ExcelReader
。 它声明变量a1Val
和b1Val
的值(包含所需电子邮件地址的单元格)。
package com.test.Email;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelReader {
public static void main(String[] args) {
try {
FileInputStream fileInputStream = new FileInputStream("C:/Users/TEST.xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);
XSSFSheet worksheet = workbook.getSheetAt(0);
XSSFRow row1 = worksheet.getRow(0);
XSSFCell cellA1 = row1.getCell((int) 0);
String a1Val = cellA1.getStringCellValue();
XSSFCell cellB1 = row1.getCell((int) 1);
String b1Val = cellB1.getStringCellValue();
所以现在我们有了从excel设置的变量。 mailTo和mailFrom在单元格A1和B1中。 现在,我需要我的Send Email类从ExcelReader类中获取A1和B1并将它们的值分配给发送者和接收者。 我知道下面的内容非常不正确。
package com.test.Email;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class SendCF {
//Not sure about this, I think I need to declare a local ExcelReader here?
ExcelReader cfExcel = new ExcelReader();
public static void main(String[] args)
String host = "smtp.gmail.com";
String port = "587";
//These two variables, I need to get from the excel sheet via the ExcelReader class.
String mailFrom = cfExcel.a1Val;
String mailTo = "cfExcel.b1Val;
String password = "QAtesting";
// after this I compose the email and send it.
编辑:我现在在main方法之外声明变量,但是不允许我将它们公开。 我得到“变量a2Val的非法修饰符;仅允许final”
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelReader {
{
try {
FileInputStream fileInputStream = new FileInputStream("C:/Users/test.xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);
XSSFSheet worksheet = workbook.getSheetAt(0);
XSSFRow row1 = worksheet.getRow(0);
XSSFCell cellA1 = row1.getCell((int) 0);
String a1Val = cellA1.getStringCellValue();
XSSFCell cellB1 = row1.getCell((int) 1);
String b1Val = cellB1.getStringCellValue();
XSSFCell cellC1 = row1.getCell((int) 2);
String c1Val = cellC1.getStringCellValue();
XSSFCell cellD1 = row1.getCell((int) 3);
String d1Val = cellD1.getStringCellValue();
XSSFCell cellE1 = row1.getCell((int) 4);
String e1Val = cellE1.getStringCellValue();
XSSFCell cellF1 = row1.getCell((int) 5);
String f1Val = cellF1.getStringCellValue();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//dont think I need anything here?
}
}
您在main方法中定义了a1Val
和b1Val
,这些变量只能在该范围内访问。 如果要在class
之外访问它们,则需要使它们成为全局变量。 如果要直接访问它们,则需要使用public
修饰符,或者可以使用private
并创建getters
和setters
第二个选项。
方法1:
public class ExcelReader {
public String a1Val;
public String b1Val;
public static void main(String[] args) {
像这样访问:
cfExcel.a1Val;
方法2:
public class ExcelReader {
private String a1Val;
private String b1Val;
public String geta1Val()
{
return this.a1Val;
}
public String getb1Val()
{
return this.b1Val;
}
public void seta1Val(String a1Val)
{
this.a1Val = a1Val;
}
public void setb1Val(String b1Val)
{
this.b1Val = b1Val;
}
public static void main(String[] args) {
像这样访问:
cfExcel.geta1Val();
cfExcel.seta1Val("test");
****************************************************** ****** UPDATE *********************************************** ***************
它应该是这样的:
public class ExcelReader {
public String a1Val;
public String b1Val;
public static void main(String[] args) {
try {
FileInputStream fileInputStream = new FileInputStream("C:/Users/TEST.xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);
XSSFSheet worksheet = workbook.getSheetAt(0);
XSSFRow row1 = worksheet.getRow(0);
XSSFCell cellA1 = row1.getCell((int) 0);
a1Val = cellA1.getStringCellValue();
XSSFCell cellB1 = row1.getCell((int) 1);
b1Val = cellB1.getStringCellValue();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.