在Java 9的发布,许多方法已经被添加到许多类,大部分(如果不是全部),其中包含了文档中的以下内容:
从:9
是否有一种简单的方法可以在任意类中添加任何新方法而无需浏览其文档?
我是C的新手,我认为无论怎么做都没有任何区别,但我注意到在大多数示例中,for的循环都是如下例所示:
int i;
for(i = 0; i < 10; i++){
//some code
}
Run Code Online (Sandbox Code Playgroud)
而不是我最初如何在Java中引入for循环:
for(int i = 0; i < 10; i++){
//some code
}
Run Code Online (Sandbox Code Playgroud)
这背后有什么理由在C?
我正在准备Java 8证书,以下让我困惑一点点,也许有人可以帮我这个?在该示例中,对Squirrel类进行了建模.它有名字和重量.现在你可以创建一个Comparator类来使用这两个字段对这个东西进行排序.所以首先按名称排序,然后按重量排序.像这样的东西:
public class ChainingComparator implements Comparator<Squirrel> {
public int compare(Squirrel s1, Squirrel s2) {
Comparator<Squirrel> c = Comparator.comparing(s -> s.getSpecies());
c = c.thenComparingInt(s -> s.getWeight());
return c.compare(s1, s2);
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止一切都那么好..但后来令人费解的部分.在代码示例下面,他们声明您可以使用方法链接在一行中编写它.也许我误解了,但当我链接比较和thenComparing部分时,我得到一个编译错误.它与被比较的对象类型有关(首先是String,然后是int).
当我输入中间变量而不是链接时,为什么它可以工作?是否有可能连锁?
该列表的javadoc提到列表是有序的。但是,我看不到任何指定顺序性质的信息。我们可以依靠列表例如ArrayList和LinkedList来保持插入顺序吗?
我问的是我们不致电set或的情况sort。
正如本博客所述,我们现在可以使用本地类型推断编写以下内容(据我所知,这是以前在不引入更多代码的情况下无法实现的):
public static void main(String... args) {
var duck = (Quacks & Waddles) Mixin::create;
duck.quack();
duck.waddle();
}
interface Quacks extends Mixin {
default void quack() {
System.out.println("Quack");
}
}
interface Waddles extends Mixin {
default void waddle() {
System.out.println("Waddle");
}
}
interface Mixin {
void __noop__();
static void create() {}
}
Run Code Online (Sandbox Code Playgroud)
这个问题可能过于宽泛或主要基于意见,但在利用这样的交集类型时是否存在任何有用的应用?
虽然在for循环中很容易实现,但在Java-8中是否有办法查找列表L中的所有元素是否都存在于Set中s?
随着Java 9的到来,Observable类和Observer接口现已弃用.
[Observable]和Observer接口已被弃用.Observer和Observable支持的事件模型非常有限,Observable提供的通知顺序未指定,状态更改不与通知一一对应.对于更丰富的事件模型,请考虑使用java.beans包.
它建议使用该java.beans包,但是如何使用它来创建一个模拟Observer模式的事件处理程序呢?
这是一个非常简单的问题,但这里的某个人必须知道,所以这里有一个让他们获得分数的简单方法。
在Java 8,有四类的功能接口在java.util.function包:Consumer,Supplier,Function,和Predicate。AFunction将单个输入转换为单个输出。APredicate将输入转换为boolean.
Consumer和Supplier中的单个抽象方法的签名本质上是相反的:
对于Consumer<T>:
void accept(T t)
Run Code Online (Sandbox Code Playgroud)
而对于Supplier<T>:
T get()
Run Code Online (Sandbox Code Playgroud)
由于 aConsumer接受输入并且不返回任何内容而 a 不Supplier接受任何内容并返回值,因此它们感觉像是对立的。如果有人问我 a 的反义词是什么Consumer,我自然会想到Producer,就像生产者-消费者问题一样。
所以我(诚然有些愚蠢)的问题是,为什么不Supplier叫Producer?我失踪有明显的原因吗?
是否可以实现一个一旦有答案就停止处理流的收集器?
例如,如果收集器正在计算平均值,并且其中一个值是 NaN,我知道答案将是 NaN,而不会看到更多值,因此进一步的计算是没有意义的。
为什么Bill Pugh的Singleton设计模式线程安全?
public class Logger {
private Logger() {
// private constructor
}
// static inner class - inner classes are not loaded until they are
// referenced.
private static class LoggerHolder {
private static Logger logger = new Logger();
}
// global access point
public static Logger getInstance() {
return LoggerHolder.logger;
}
//Other methods
}
Run Code Online (Sandbox Code Playgroud) java ×9
java-8 ×5
java-9 ×2
c ×1
class ×1
collections ×1
java-stream ×1
javabeans ×1
javadoc ×1
list ×1
methods ×1
observable ×1
ocpjp ×1
set ×1
singleton ×1