小编VWe*_*ber的帖子

引用类型和对象类型

我正在指导同事OCA-Java 7认证.他也参加了一门课程并在那里做了准备考试.其中一个问题是关于参考和对象类型.这是代码:

package com.company;

public class Vehicle implements Mobile {

  public static void main(String[] args) {
    Truck theTruck = new Truck();
    Vehicle theVehicle = theTruck;
    Mobile theMobile = theVehicle;
  }
}

class Truck extends Vehicle {
}

interface Mobile {
}
Run Code Online (Sandbox Code Playgroud)

问题:什么是引用类型和对象类型theMobile

以下是选择:

  • 参考类型是"移动",对象类型是"移动"
  • B参考类型为"Truck",对象类型为"Truck"
  • C引用类型为"Mobile",对象类型为"Truck"
  • D参考类型为"Car",对象类型为"Mobile"

答案B被标记为正确答案......但是恕我直言答案C是对的.谁在这里错了?!

java reference-type object-type

13
推荐指数
2
解决办法
1148
查看次数

将快捷方式编号设置为IntelliJ的工具窗口

我想知道是否可以为IntelliJ的工具窗口设置一个自己的快捷方式.项目工具窗口的默认快捷方式是ALT + 1,我想更改此设置或为每个示例指定一个没有默认快捷方式的持久性工具窗口的快捷方式.提前致谢.

intellij-idea

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

CDI制作人和注射

我想在我的应用程序中使用一个生产者,但我陷入了困境,我正在尝试注入bean.我得到了着名的WELD-001409错误.请减轻我对cdi制作人的理解.

这是我的界面:

@Named
    public interface MessageSender {
      void sendMessage();
    }
Run Code Online (Sandbox Code Playgroud)

豆子:

public class EmailMessageSender implements MessageSender {

  @Override
  public void sendMessage() {
    System.out.println("Sending email message");
  }

}
Run Code Online (Sandbox Code Playgroud)

和制片人:

@SessionScoped
public class MessageSenderFactory implements Serializable {

    private static final long serialVersionUID = 5269302440619391616L;

    @Produces
    public MessageSender getMessageSender() {
        return new EmailMessageSender();
    }

}
Run Code Online (Sandbox Code Playgroud)

现在我正在注入豆子:

@Inject 
MessageSender messageSender;
Run Code Online (Sandbox Code Playgroud)

当我尝试部署项目时,我得到了WELD-001409错误,eclipse也说有多个注入点.

它适用于显式命名:

@Inject @Named("messageSender")
MessageSender messageSender;
Run Code Online (Sandbox Code Playgroud)

这个命名是否必要?

java cdi weld

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

是否可以将CDI Bean注入Java EE 6中的静态变量?

这可能吗:

@Inject
@MessageTransport(MessageTransportType.SMS)
public static MessageSender messageSender;
Run Code Online (Sandbox Code Playgroud)

当我试图访问这个静态变量时,我得到了一个N​​PE.所以我想知道,如果一般情况下不可能的话.

提前致谢.

java-ee cdi

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

数组初始化的差异

在查看源文件时,我看到了两种数组初始化方法.我想知道它们之间是否存在差异

int[] value = new int[0];
Run Code Online (Sandbox Code Playgroud)

int[] value_next = new int[]{};
Run Code Online (Sandbox Code Playgroud)

java arrays

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

使用Apache CXF的JAX-RS FileUpload

我正在尝试使用JAX-RS和TomEE的Apache CXF实现(2.6.14)上传文件,但上传的文件始终为null.

这是代码:

  @POST
  @Path("/upload")
  @Consumes(MediaType.MULTIPART_FORM_DATA)
  public Response uploadFile(@Multipart(value = "file") @NotNull Attachment attachment) throws UnsupportedEncodingException {
    try {

      System.out.println(attachment);

      return Response.ok("file uploaded").build();

    } catch (Exception ex) {
      logger.error("uploadFile.error():", ex);
      return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
    }
  }
Run Code Online (Sandbox Code Playgroud)

和一个非常简单的HTML文件上传:

<form action="http://127.0.0.1:8080/eegrating/restapi/cashflowparameter/upload" method="post" enctype="multipart/form-data">
    <p>File:<br>
        <input name="file" type="file" size="50" maxlength="100000" accept="text/*">
        <input type="submit" name="Submit" value="Send">
    </p>
</form>
Run Code Online (Sandbox Code Playgroud)

请求标题看起来很好:

------ WebKitFormBoundaryOCleIjB2JgeySK0w Content-Disposition:form-data; NAME = "文件"; filename ="git.txt"Content-Type:text/plain

但附件始终为空.有什么建议?提前致谢.

java rest web-services cxf java-ee

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

CDI-Interceptor:从拦截的方法获取参数

我有一个界面

@InterceptorBinding
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.METHOD, ElementType.TYPE })
public @interface LoggingInterceptorBinding {

}
Run Code Online (Sandbox Code Playgroud)

和一个班级:

@LoggingInterceptorBinding
@Interceptor
public class LoggingInterceptor implements Serializable {

@AroundInvoke
public Object onMethodCall(InvocationContext context) throws Exception {
    try {
        System.out.println("Log before Method");
        return context.proceed();
    } finally {
        System.out.println("Log after Method");
    }

}
Run Code Online (Sandbox Code Playgroud)

和一个带注释的方法:

@LoggingInterceptorBinding
public void sayHello(String name)
Run Code Online (Sandbox Code Playgroud)

是否可以在拦截器"onMethodCalls"-method中从sayHello获取参数"name"?

java cdi

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

将接口列表转换为具体类型列表

我有一个从db获取一些对象的方法:

public <T extends Persistable> List<T> getAllEntitiesEager(
        Class clazz, String sortField, SortOrder sortOrder,
        Map<String, Object> filters, boolean invalidate);
Run Code Online (Sandbox Code Playgroud)

此方法返回类型中的对象列表clazz.返回的所有对象都实现了接口Persistable.现在我需要一个具体类型列表.这甚至可能吗?

例:

Class UserEntity实现了Persistable,我想做类似的事情:

List<UserEntity> userList = (List<UserEntity) 
        someObject.getAllEntitiesEager(UserEntity.class,...)
Run Code Online (Sandbox Code Playgroud)

java generics

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

如何在 Eclipse MicroProfile 中添加计时器服务

在 Java EE 中,我使用 EJB 计时器服务来安排任务:

@Stateless
public class TestSchedule {

    @Schedule(second = "*/30", minute = "*", hour = "*")
    public void processFiles() {

    }
}
Run Code Online (Sandbox Code Playgroud)

由于 Eclipse Micro Profile 不支持这种方法...实现这一点的常用方法是怎样的?

websphere-liberty payara payara-micro microprofile jakarta-ee

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