小编hol*_*ava的帖子

如何在Kotlin中实现java SAM接口?

在Java中,可以编写如下代码:

model.getObservableProduct().observe(this, new Observer<ProductEntity>() {
    @Override
    public void onChanged(@Nullable ProductEntity productEntity) {
        model.setProduct(productEntity);
    }
});
Run Code Online (Sandbox Code Playgroud)

但是,尝试覆盖Kotlin中的本地函数会导致: 在此输入图像描述


问题:是否可以覆盖Kotlin中的本地功能?

android functional-programming kotlin functional-interface

2
推荐指数
1
解决办法
518
查看次数

如何从Java8的spliterator中的tryAdvance方法返回值?

我是Java 8的新手,试图了解Java8的splitIterator功能。

我已经编写了以下代码,我的要求是每当我调用get()时;get方法应该从itr3返回一个值;是否有可能得到相同的?如何?

public class TestSplitIterator {

static List<Integer> list = new ArrayList<Integer>();

public static void main(String args[]) {

    for (int i = 0; i < 100; i++) {
        list.add(i);
    }
    // below method call should return only one value whenever i call it;
    get(list);
}

private static int get(List<Integer> list) {
    Collections.sort(list, Collections.reverseOrder());

    System.out.println(list);

    Spliterator<Integer> itr1 = list.spliterator();
    Spliterator<Integer> itr2 = itr1.trySplit();
    Spliterator<Integer> itr3 = itr2.trySplit();
    // i want to return value from itr3 whenever get(List list ic called) …
Run Code Online (Sandbox Code Playgroud)

java-8 java-stream

2
推荐指数
1
解决办法
512
查看次数

为什么在堆栈中分配的值没有导致双释放指针?

请告诉我为什么没有导致在堆栈中分配值的双自由指针?谢谢。

#[test]
fn read_value_that_allocated_in_stack_is_no_problem() {
    let origin = Value(1);
    let copied = unsafe { std::ptr::read(&origin) };

    assert_eq!(copied, Value(1));
    assert_eq!(copied, origin);
}

/// test failed as expected: double free detected
#[test]
fn read_value_that_allocated_in_heap_will_result_in_double_free_problem() {
    let origin = Box::new(Value(1));
    let copied = unsafe { std::ptr::read(&origin) };

    assert_eq!(copied, Box::new(Value(1)));
    assert_eq!(copied, origin);
}


#[derive(Debug, PartialEq)]
struct Value<T>(T);
Run Code Online (Sandbox Code Playgroud)

rust

2
推荐指数
1
解决办法
190
查看次数

更好的方法来测试非空字段

我有一个包含一些字段的对象,我想检查一些字段是否为空且不为空.有没有一种很好的方法在java 8或apache实用程序中这样做...

我不想做类似的事情

if(myObj.getMyField1 != null || myObj.getMyField1 != "" || myObj.getMyField2 != null || myObj.getMyField2 != "" || myObj.getMyField3 != null || myObj.getMyField3 != "") {} 
Run Code Online (Sandbox Code Playgroud)

这是myObj

@Data // lombok for generating getters and setters
public class Myobj {
   private String myField1;
   private String myField2;
   private String myField3;
   private String myField4;
   private String myField5;

   private AnotherObj myField6;

}
Run Code Online (Sandbox Code Playgroud)

你有什么建议吗?

java spring java-8 spring-boot

1
推荐指数
1
解决办法
2178
查看次数

使用反射API获取字段名称和值

我正在创建许多 POJO,并且必须toString()为每个 POJO 创建方法。我认为使用反射 API 创建一个类来为我完成工作会更容易,而不是对每个项目进行手动编码——在一个地方创建功能并在每个 POJO 中使用它。

POJO 中的所有字段都是私有的。POJO 是 JSON 对象的 Java 对象表示。

要求是遍历类中的字段,并列出字段和值。

我目前正在测试一个名为的类的功能ChannelResource.

这是我用来列出字段名称和值的类:

    import java.lang.reflect.Field;
    public class ToStringMaker {
      public ToStringMaker( Object o) {

      Class<? extends Object> c = o.getClass();
      Field[] fields = c.getDeclaredFields();
      for (Field field : fields) {
          String name = field.getName();            
          try {
            System.out.format("%n%s: %s", name, field.get(o));
          } catch (IllegalArgumentException e) {
            e.printStackTrace();
          } catch (IllegalAccessException e) {
            e.printStackTrace();
          }
      }
  }}
Run Code Online (Sandbox Code Playgroud)

我将类的实例传递ChannelResource给构造函数。

编译器不喜欢field.get(o)这一行:

    System.out.format("%n%s: …
Run Code Online (Sandbox Code Playgroud)

java reflection

1
推荐指数
1
解决办法
1万
查看次数

如何轮询 Pin&lt;Option&lt;Box&lt;dyn Future&gt;&gt;?

Option<Box<dyn Future>当在异步函数递归生成的流中实现时。如何投票Pin<Option<Box<dyn Future>>?谢谢。

use std::{
    future::Future,
    pin::Pin,
    task::{Context, Poll},
};

use futures_util::Stream;

#[pin_project::pin_project]
struct BoxedStream<T, F> {
    #[pin]
    next: Option<String>,
    #[pin]
    inner: Option<Box<dyn Future<Output = T>>>,
    //             ^--- Future generated by async function, it is an opaque type.
    generate: F,
}

impl<T, F> Stream for BoxedStream<T, F>
where
    F: Fn(String) -> (Option<String>, Box<dyn Future<Output = T>>),
{
    type Item = T;

    fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
        let mut p = self.as_mut().project(); …
Run Code Online (Sandbox Code Playgroud)

asynchronous rust

1
推荐指数
1
解决办法
172
查看次数