我正在尝试使用Java 8编译项目。
如图所示,我已经设置了正确的jdk:
还更改了目标版本:
但是我仍然遇到错误: compileSdkVersion'android-24'需要JDK 1.8或更高版本进行编译。
我哪里错了?
编辑:我在Ubuntu 12.04上
我试图理解java中的一个程序,它使用lambda将对象返回到接口的引用变量中.我想将lambda转换为简单的java函数,但不知道该怎么做.
该计划如下: -
public class AgentLicenseLazyModel extends CoreDataModel<AgentLicenseModel> {
public AgentLicenseLazyModel(final List<AgentLicenseModel> entities) {
super(AgentLicenseModel.class, entities, (sortField, sortOrder) -> {
return new AgentLicenseLazySorter(sortField, sortOrder);
});
}
}
Run Code Online (Sandbox Code Playgroud)
这是抽象类:
public abstract class CoreDataModel<T extends AbstractEntityModel> extends LazyDataModel<T> {
private final Class<T> entityClass;
private final List<T> entities;
private final CoreDataSorterProducer<T> coreDataSorterProducer;
public CoreDataModel(final Class<T> entityClass, final List<T> entities, final CoreDataSorterProducer<T> coreDataSorterProducer) {
this.entityClass = entityClass;
this.entities = entities;
this.coreDataSorterProducer = coreDataSorterProducer;
if (entities != null) {
setRowCount(entities.size());
}
}
Run Code Online (Sandbox Code Playgroud)
如何在不使用lambda进行学习的情况下将此程序转换为简单的java程序.请帮忙.
编辑:这是CoreDataSorterProducer:
@FunctionalInterface …Run Code Online (Sandbox Code Playgroud) 下面的代码创建空的地图Stream使用lambda expression和下一行用于输出的任何元素的信息流中.但是在运行代码时它会产生无限的输出.我不知道为什么,因为它应该打印{}一次因为地图是空的.有人可以解释发生了什么吗?
Stream<Map<String,String>> mapStream = Stream.generate(() -> {
return Collections.emptyMap();
});
mapStream.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud) 自从这个方法
Stream.of(T... values)
Run Code Online (Sandbox Code Playgroud)
包括单个元素的情况,为什么方法:
Stream.of(T t)
Run Code Online (Sandbox Code Playgroud)
还包括在API中?它的目的是什么?什么时候被调用?它与varargs版本有什么不同吗?
我正在升级依赖于HashMap的Java 7迭代顺序的应用程序.Java 8 HashMap改变了它的迭代顺序,这与一些应用程序(可能是糟糕的设计)不兼容,我必须使用Java 7 HashMaps成功地将应用程序迁移到Java 8.这就是我想到的方式:
这是一个很好的方法吗?遗憾的是,不能重写依赖于Java 7版本的HashMap的部分.
在以下代码段中:
public class IDMapBase<T> extends HashMap<DeviceID, T> {
public Map<DeviceID, T> filterMap(Set<DeviceID> neededIDs) {
return entrySet().stream()
.filter(e -> neededIDs.contains(e.getKey()))
.collect(Collectors.toMap(Entry::getKey, Entry::getValue));
}
}
Run Code Online (Sandbox Code Playgroud)
为什么简单地说Entry::getXX而不是Entry<DeviceID, T>>::getXX?我认为这(Map.)Entry将默认为Entry<Object, Object>,它不能用作a的条目Map<DeviceID, T>.
执行下面的代码时出错,
引起:java.lang.IllegalAccessError:试图从类访问com.google.common.collect.AbstractTable类
ImmutableTable.copyOf(listItemsToProcess.parallelStream()
.map(item ->
ProcessorInstanceProvider.getInstance()
.buildImmutableTable(item))
.collect(() -> HashBasedTable.create(),
HashBasedTable::putAll,
HashBasedTable<Integer, String,
Boolean>::putAll)
);
Run Code Online (Sandbox Code Playgroud)
出现错误 - HashBasedTable :: putAll使用Oracle的1.8 jre
给定String stringJava中的一个,确实string.codePoints().toArray().length反映String了人类会发现有意义的实际字符的长度吗?换句话说,它是否平滑了转义字符和其他编码工件?
编辑 "人类"我的意思是"程序员",因为我想大多数程序员会看到\r\n两个角色,ESC一个角色等等.但是现在我看到即使是重音标记也会被雾化,所以无关紧要.
public class ShiftPatternDTO{
private boolean monday;
private boolean tuesday;
private boolean wednesday;
private boolean thursday;
private boolean friday;
private boolean saturday;
private boolean sunday;
public boolean isMonday() {
return monday;
}
public boolean isTuesday() {
return tuesday;
}
public boolean isWednesday() {
return wednesday;
}
public boolean isThursday() {
return thursday;
}
public boolean isFriday() {
return friday;
}
public boolean isSaturday() {
return saturday;
}
public boolean isSunday() {
return sunday;
}
}
public enum WeekDay {
MONDAY("Monday", 1), …Run Code Online (Sandbox Code Playgroud)