我正在尝试使用apache poi使用下面的代码在excel文件中创建一个namged范围.
private static void createNamedRangesForGeneratedValues(final XSSFWorkbook workBook, final String name, final String cellAreaRange) {
final Name cellRangeName = workBook.createName();
cellRangeName.setNameName(name);
final String reference = name + cellAreaRange; // "!A1:C5"; // area reference
cellRangeName.setRefersToFormula(reference);
Run Code Online (Sandbox Code Playgroud)
但是在这一步: cellRangeName.setRefersToFormula(reference);抛出以下异常.
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.poi.ss.formula.FormulaParser.parse(Ljava/lang/String;Lorg/apache/poi/ss/formula/FormulaParsingWorkbook;II)[Lorg/apache/poi/hssf/record/formula/Ptg;
at org.apache.poi.xssf.usermodel.XSSFName.setRefersToFormula(XSSFName.java:195)
at test.java.ExcelSheetDropDownDataHandler.createNamedRangesForGeneratedValues(ExcelSheetDropDownDataHandler.java:186)
at test.java.ExcelSheetDropDownDataHandler.generateCountryData(ExcelSheetDropDownDataHandler.java:93)
at test.java.ExcelSheetDropDownDataHandler.generateData(ExcelSheetDropDownDataHandler.java:64)
at test.java.ExcelSheetDropDownDataHandler.createDataTab(ExcelSheetDropDownDataHandler.java:50)
at test.java.ExcelSheetDropDownDataHandler.main(ExcelSheetDropDownDataHandler.java:205)
Run Code Online (Sandbox Code Playgroud)
有人可以建议,这可能是什么原因?
class A implements Serializable{
}
class B extends A{
//this also inherits the marker
}
Run Code Online (Sandbox Code Playgroud)
那么有没有办法在课堂上实现/取消标记B?
示例:如果有两个类扩展A名为B和C.但是他们只C想要序列化而不是B.
我知道我可以使用.values()和.keyset()自己获取相应的键/值(来自hashmap).我试图让他们在一起并在get方法中返回它.
我可以entryset()用来获取一个条目,但是在循环中做它以生成一个入口集的数组列表然后返回它吗?不确定这是否是最佳方式.有什么建议?
public class ConnectionManager {
private static Map <String, ConnectionManager> managerInstances = new HashMap<String, ConnectionManager>();
private String dsKey;
private ConnectionManager(String dsKey){
this.dsKey = dsKey;
}
public static ConnectionManager getInstance(String dsKey){
ConnectionManager managerInstance = managerInstances.get(dsKey);
if (managerInstance == null) {
synchronized (ConnectionManager.class) {
managerInstance = managerInstances.get(dsKey);
if (managerInstance == null) {
managerInstance = new ConnectionManager(dsKey);
managerInstances.put(dsKey, managerInstance);
}
}
}
return managerInstance;
}
}
Run Code Online (Sandbox Code Playgroud)
我最近在GoF的书籍定义中没有使用Singleton模式的地方看到了这段代码.Singleton正在存储一个Map自己的实例.
这可以称为什么样的单身人士?或者这是Singleton的有效使用?
我有下面的代码,它创建一个对象数组,然后尝试添加相同类型的对象.
我在行上得到错误"语法错误,插入"新的ClassType()"以完成表达式"
vehicles.[index] = nextVehicle;
Run Code Online (Sandbox Code Playgroud)
但在我看来,它没有任何问题.从长到int的演员阵容是否会造成一些问题?
long vehicleSize = getVehicleSize();
Vehicle[] vehicles= new Vehicle[(int)vehicleSize];
Vehicle nextVehicle = null;
int offSet = 0;
int index= 0;
while (offSet < vehicleSize) {
nextVeh = new Vehicle(db, offSet);
vehicles.[index] = nextVehicle;
index++;
offSet += nextVehicle.getSize();
}
Run Code Online (Sandbox Code Playgroud) 我的主要问题是返回的contains()方法ArrayList始终为false,但我不确定为什么。
我创建了一个,ArrayList<Position>名为allValidPositions,其中包含我的自定义类的许多实例Position。
当我尝试在中找到特定Position元素时ArrayList,它总是返回false。
// The parameters represent X and Y coordinates
Position positionToCheck = new Position(0, 0);
if (allValidPositions.contains(positionToCheck) {
System.out.println("Found");
} else {
System.out.println("Not found");
}
Run Code Online (Sandbox Code Playgroud)
Not found尽管我知道有一个Position应该是同一对象(对象中的字段和值相同),但它始终会打印。