아래 코드는 javax.activation.DataHandler.getDataContentHandler, 1.41, 07/05/14를위한 코드입니다.dataContentHandler 멤버 변수가 javax.activation.DataHandler.getDataContentHandler에서 덮어 쓰여지고 있습니까?
메서드가 호출 될 때 dataContentHandler 멤버 변수가 null 인 경우 [1]의 if 절로 설정됩니다 (내 프로그램에서 발생).
그런 다음 [2]의 if 절에서 즉시 덮어 씁니다.
내가 누락되었거나 의도 한 동작이 될 가능성이 낮습니까?
private synchronized DataContentHandler getDataContentHandler() {
// make sure the factory didn't change
if (factory != oldFactory) {
oldFactory = factory;
factoryDCH = null;
dataContentHandler = null;
transferFlavors = emptyFlavors;
}
if (dataContentHandler != null)
return dataContentHandler;
String simpleMT = getBaseType();
if (factoryDCH == null && factory != null)
factoryDCH = factory.createDataContentHandler(simpleMT);
if (factoryDCH != null)
dataContentHandler = factoryDCH;
if (dataContentHandler == null) { // [1]
if (dataSource != null)
dataContentHandler = getCommandMap().
createDataContentHandler(simpleMT, dataSource);
else
dataContentHandler = getCommandMap().
createDataContentHandler(simpleMT);
}
// getDataContentHandler always uses these 'wrapper' handlers
// to make sure it returns SOMETHING meaningful...
if (dataSource != null) // [2]
dataContentHandler = new DataSourceDataContentHandler(
dataContentHandler,
dataSource);
else
dataContentHandler = new ObjectDataContentHandler(
dataContentHandler,
object,
objectMimeType);
return dataContentHandler;
}
나는
아, 그래, 고마워, 나는 그것을 놓쳤다. –