标签: java-7

Java 7 switch语句,字符串不起作用

根据The Java Tutorials,在Java SE 7及更高版本中,您可以在switch语句的表达式中使用String对象.

String s = ...
switch(s){
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

但这是真的吗?我已经安装了JRE并将其添加到我的Eclipse项目的构建路径中,但是我收到以下编译时错误:

无法打开String类型的值.只允许使用可转换的int值或枚举常量

此外,我认为我已经正确配置,因为我能够使用它的java.nio.file.Files类,以及JLayer.

有任何想法吗?

java eclipse string switch-statement java-7

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

为什么这种泛型方法的重写适用于1.6,而不是1.7?

给定以下类,它覆盖AbstractListModel中的getListeners方法:

import java.util.EventListener;
import javax.swing.AbstractListModel;

public class GenericBug extends AbstractListModel {

/**
 * This is the method of interest
     * This is the exact same method signature that is present in the base class
 */
@Override
public <T extends EventListener> T[] getListeners(Class<T> listenerType) {
    // do something useful here...
    return super.getListeners(listenerType);
}

// Not important here
@Override
public int getSize() {
    return 0;
}
@Override
public Object getElementAt(int index) {
    return null;
}
}
Run Code Online (Sandbox Code Playgroud)

使用Oracle 1.6 JDK编译此类很好.使用Oracle 1.7 JDK尝试完全相同的类,我得到编译错误,说有一个名称冲突,但该方法没有被覆盖(但它是!!)

这是我使用JDK7时遇到的错误: …

java generics java-7

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

检测AutoCloseable中的异常close()

我想构建一个自定义AutoCloseable类,所以我可以转为:

try {
    begin();
    doThings();
    commit();
} finally {
    if (transactionIsActive()) rollback();
}
Run Code Online (Sandbox Code Playgroud)

变得更容易

try (Transaction t = begin()) { // too bad I have to store it in t though I don't use it
    doThings();
}
Run Code Online (Sandbox Code Playgroud)

Transaction将在AutoCloseable这里,并在close()其中将适当地提交或回滚事务.

但为了实现这一目标,我需要检测Transaction.close()try块内是否发生异常或者是否正常完成.这有可能吗?

如果它需要从新的异常中解析堆栈跟踪,那就没问题.更简单的编程将值得带来的微小性能打击.

java transactions exception-handling java-7

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

Tomcat6和Java 7

在linux中,是否可以在tomcat6上部署使用Java 7编写的Web应用程序?如果是这样,需要修改哪些配置才能使其正常工作?

我已经尝试更改文件中的JAVA_HOME变量tomcat6.conf并重新启动,但它仍然使用1.6根据tomcat管理器网页,并且只有1.6或更低版本的应用程序正确部署.

我在不同的位置安装了jdk 1.6和1.7.

java tomcat6 java-7

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

Java NIO2 AsynchronousSocketChannel/AsynchronousServerSocketChannel和TLS/SSL

在NIO2上可用的INTERNET上的所有源/样本都没有TLS/SSL支持,

java.nio.channels.AsynchronousSocketChannel java.nio.channels.AsynchronousServerSocketChannel

据我所知,连接的SSLEngine生命周期与AsynchronousSocketChannel.connect && AsynchronousServerSocketChanne.accept不同,TLS/SSL应该封装在AIO实现中,所以如何才能使用它们?注意:我在Grizzly项目中是一个视频,谈论他们已经实现了它,我查看了源代码,但是我看到了AIO而不是TLS/SSL集成......

提前致谢!

java grizzly java-7 nio2

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

Java7 WatchService - 如何检测实际监视目录的重命名/移动

我正在使用WatchService应用程序工作台的同步数据文件.当我重命名/移动被监视的目录时,我没有得到任何事件,WatchKey也不会变得无效.我仍然从重命名的目录中获取事件,但据我所知,没有办法找出WatchKey的实际路径WatchKey.watchable(),但仍然会返回原始目录路径.我想避免需要锁定监视目录以防止更改,因为我希望尽可能保持应用程序的轻量级.

我在Windows 7上遇到过JDK 7u10的这个问题

您是否知道此问题的任何解决方法而不锁定目录或查看根目录的所有目录?

UPDATE

在Linux上,我观察到了相同的行为.

到目前为止,我现在有三种选择.

1)依靠用户的纪律,他/她不会移动数据目录.我真的不喜欢这个选项,因为它可能会导致未定义的行为.

2)使用更广泛的非标准本机库

3)在高级目录上创建监视程序的层次结构.这些只接受ENTRY_DELETE事件,因为此事件(或OVERFLOW)必须在实际监视目录被移动或删除时出现,因此无效.

java io java-7 watchservice

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

使用拖放重新排序JList

我遇到了有关使用拖放重新排序JList中的元素的问题.以下代码是对代码的修改,您可以将元素从一个JList拖动到另一个JList(仅以一种方式工作).我试图让它只用于一个JList,但是元素甚至不能被拖出列表.所以我想这不可能这样做.我有什么不对的想法?

我的想法是让它为带有缩略图的Jlist工作,但因为我甚至无法让它只用于字符串...我一直在研究几个D'n'D教程,但我仍然不能让它工作.任何帮助表示赞赏.

import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.datatransfer.*;
import java.io.IOException;

public class DragAndDrop extends JFrame {


DefaultListModel<String> transport = new DefaultListModel<String>();
JList<String> transportList = new JList<String>(transport);

public DragAndDrop() {
    setLayout(new FlowLayout());

    transport.addElement("Bike");
    transport.addElement("Car");
    transport.addElement("Truck");
    transport.addElement("Boat");

    JScrollPane transportScroll = new JScrollPane(transportList);
    transportScroll.setBorder(new TitledBorder("Transportation"));

    add(transportScroll);

    transportList.setDragEnabled(true);

    transportList.setTransferHandler(new TransferHandler() {
        int index;  

        @Override
        public int getSourceActions(JComponent comp) {
            return COPY_OR_MOVE;
        }

        @Override
        public Transferable createTransferable(JComponent comp) {
            index = transportList.getSelectedIndex(); 
            return new StringSelection(transportList.getSelectedValue());
        }


        @Override
        public void exportDone( JComponent comp, Transferable …
Run Code Online (Sandbox Code Playgroud)

java swing drag-and-drop jlist java-7

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

Java 7独立应用程序中的依赖注入

我想在大型Java 7独立应用程序中使用依赖注入,但我不确定从哪里开始.

我写了一个小测试应用程序:

public class Main {

    @Inject
    MyInterface myInterface;

    public static void main( String[] args ) {

        Main m = new Main();
        System.out.println(m.myInterface.getMessage());

    }

}
Run Code Online (Sandbox Code Playgroud)

有一个界面:

public interface MyInterface {

    String getMessage();

}
Run Code Online (Sandbox Code Playgroud)

和接口实现:

@Singleton
public class MyInterfaceImpl implements MyInterface {

    public String getMessage() {
        return "Hello World!";
    }

}
Run Code Online (Sandbox Code Playgroud)

将pom.xml包含一个依赖:

<dependencies>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

这个应用程序编译,但当然,它NPE在尝试打印消息时崩溃.注射没有发生.

所以,我的问题是:

  1. 可以在Java 7独立应用程序中实现依赖项注入吗?
  2. 我必须包含哪些其他依赖项才能使其工作?
  3. 有没有人有一个简单的操作示例来分享(我找不到)?

dependency-injection maven java-7

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

Android Studio无法导入项目:java.util.ArrayList无法强制转换为java.util.Map

当我尝试通过Android Studio导入我的项目时,我收到此错误.

我在项目中使用了gmaps.我该如何解决这个错误?

我已经重新安装了Java并重置了JAVA_HOME.我也确保Gradle设置正确.

2013-12-23 11:13:35,448 [ 107774]   WARN - nal.AbstractExternalSystemTask - Cause: java.util.ArrayList cannot be cast to java.util.Map 
com.intellij.openapi.externalSystem.model.ExternalSystemException: Cause: java.util.ArrayList cannot be cast to java.util.Map
    at org.jetbrains.plugins.gradle.service.project.GradleExecutionHelper.execute(GradleExecutionHelper.java:160)
    at com.android.tools.idea.gradle.project.AndroidGradleProjectResolver.resolveProjectInfo(AndroidGradleProjectResolver.java:135)
    at com.android.tools.idea.gradle.project.AndroidGradleProjectResolver.resolveProjectInfo(AndroidGradleProjectResolver.java:77)
    at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.resolveProjectInfo(GradleProjectResolver.java:83)
    at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.resolveProjectInfo(GradleProjectResolver.java:42)
    at com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemProjectResolverImpl$1.produce(RemoteExternalSystemProjectResolverImpl.java:41)
    at com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemProjectResolverImpl$1.produce(RemoteExternalSystemProjectResolverImpl.java:37)
    at com.intellij.openapi.externalSystem.service.remote.AbstractRemoteExternalSystemService.execute(AbstractRemoteExternalSystemService.java:59)
    at com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemProjectResolverImpl.resolveProjectInfo(RemoteExternalSystemProjectResolverImpl.java:37)
    at com.intellij.openapi.externalSystem.service.remote.wrapper.ExternalSystemProjectResolverWrapper.resolveProjectInfo(ExternalSystemProjectResolverWrapper.java:49)
    at com.intellij.openapi.externalSystem.service.internal.ExternalSystemResolveProjectTask.doExecute(ExternalSystemResolveProjectTask.java:53)
    at com.intellij.openapi.externalSystem.service.internal.AbstractExternalSystemTask.execute(AbstractExternalSystemTask.java:130)
    at com.intellij.openapi.externalSystem.service.internal.AbstractExternalSystemTask.execute(AbstractExternalSystemTask.java:120)
    at com.intellij.openapi.externalSystem.util.ExternalSystemUtil$3.execute(ExternalSystemUtil.java:422)
    at com.intellij.openapi.externalSystem.util.ExternalSystemUtil$4$1.run(ExternalSystemUtil.java:475)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl$TaskRunnable.run(ProgressManagerImpl.java:464)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl$6.run(ProgressManagerImpl.java:274)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:178)
    at com.intellij.openapi.progress.ProgressManager.executeProcessUnderProgress(ProgressManager.java:209)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:212)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:171)
    at com.intellij.openapi.application.impl.ApplicationImpl$10$1.run(ApplicationImpl.java:657)
    at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:435)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at …
Run Code Online (Sandbox Code Playgroud)

java android java-7 android-studio android-gradle-plugin

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

关于不兼容的强制转换没有编译器错误

很抱歉,如果已经解释过,但我没有在网络中的任何地方找到类似的线程.

今天我在IDE中打开了一个项目类并看到了一个错误(红色下划线),尽管项目编译成功.

所以,代码是:

public interface DatasourceImplementation<T extends Entity> {
     ....
}

public interface Datasource<T extends Entity> {
     ....
}


public interface DsContext {
    @Nullable
    <T extends Datasource> T get(String name);
}
Run Code Online (Sandbox Code Playgroud)

现在我们将这种方法称为:

DatasourceImplementation dsImpl = getDsContext().get("dsName");
Run Code Online (Sandbox Code Playgroud)

Idea13给了我错误(不兼容的类型) - 我认为这是正确的.

Idea14在此处未显示任何错误.

JDK编译它没有错误 - 这很难过.

必须说,在我们的A接口的项目实现类中总是实现B接口(可能解释为什么Idea14说它没关系),但在我看来这不能证明这种行为是正确的 - 因为通常我可以创建实现A的类并且不会实现B.我想在我的代码中使用静态典型化,我不希望看到运行时类转换异常.

那么,谁在这里错了?

UPD.添加真实类的屏幕截图(不确定它会解释更多内容,它与我描述的相同)

在此输入图像描述

java generics classcastexception java-7

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