小编Bar*_*own的帖子

即使没有指定任何接口,也要针对接口编译Java类

我正在教编程课程的介绍,我们正在使用Java.我想帮助学生学习如何将书面课程规范翻译成工作程序.我会提供书面说明.它以方法签名的形式指定类的名称和行为.我希望学生将其转换为可用的Java类.

我可以为它们提供一个接口并让它们实现接口,但这会破坏部分目的:读取和解释书面功能规范文档.我希望他们从头开始编写课程.然后我想评估他们的工作.

我检查他们工作的想法是这样的:根据我自己的界面编译他们的Java类文件.如果它编译,那么至少我会知道他们已经遵循了所有方法合同,我可以开始测试功能.如果它没有编译,我将收到一条错误消息,报告哪些方法没有正确实现.

即使源代码中最初未指定Java类文件,如何强制对接口编译Java类文件?

换句话说,假设我有以下两个文件:

FooInterface.java

public interface FooInterface
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

Foo.java

public class Foo
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想编译Foo,就像它明确地实现了FooInterface一样.但我不想手动编辑一堆源代码文件才能这样做.我该怎么做?

编辑

要解决有关使用书面规范与提供界面的价值的问题,这是一个假设的规范文档:

使用以下方法编写一个名为Foo的类:

最旧的:年龄(int []) - > int
给定一个年龄数组,返回最高的一个.

anyAdults:ages(int []) - > boolean
给定一个年龄数组,返回它们中的任何一个是18还是更旧.

国际海事组织,这具有很大的教育效益.学生必须批判性地评估他们的课程是否符合规范.如果我提供了接口文件,他们可以拔掉他们的大脑并让编译器告诉他们他们是否遵循规范.使用编译器作为认知拐杖是与较差的学生目前(不成功)用来平衡他们的牙套和括号的技术.

java oop interface

4
推荐指数
2
解决办法
803
查看次数

无法获得简单的CUDA程序

我正在尝试CUDA编程的"hello world"程序:将两个向量相加.这是我尝试过的程序:

#include <cuda.h>
#include <stdio.h> 
#define  SIZE 10

__global__  void vecAdd(float* A, float* B, float* C) 
{ 
   int i = threadIdx.x; 
   C[i] = A[i] + B[i]; 
} 

int  main() 
{ 
     float A[SIZE], B[SIZE], C[SIZE]; 
     float *devPtrA, *devPtrB, *devPtrC; 
     size_t memsize= SIZE * sizeof(float); 

     for (int i=0; i< SIZE; i++) {
        A[i] = i;
        B[i] = i;
     }

     cudaMalloc(&devPtrA, memsize); 
     cudaMalloc(&devPtrB, memsize); 
     cudaMalloc(&devPtrC, memsize); 
     cudaMemcpy(devPtrA, A, memsize,  cudaMemcpyHostToDevice); 
     cudaMemcpy(devPtrB, B, memsize,  cudaMemcpyHostToDevice); 

     vecAdd<<<1, SIZE>>>(devPtrA,  devPtrB, devPtrC); 
     cudaMemcpy(C, devPtrC, memsize,  cudaMemcpyDeviceToHost); …
Run Code Online (Sandbox Code Playgroud)

cuda

4
推荐指数
2
解决办法
2077
查看次数

JavaFX java.lang.IllegalArgumentException:无法将javafx.scene.control.Label字段sample.Controller.location设置为java.net.URL

我的JavaFX应用程序具有fx:id为的Label location。它在FXML文件中定义。当我尝试运行该应用程序时,出现以下错误:

java.lang.IllegalArgumentException:无法将javafx.scene.control.Label字段sample.Controller.location设置为java.net.URL

我正在将JDK 12与JavaFX 11.0.2一起使用。

我在SO上看到了其他答案,说这是由locationLabel 类型冲突引起的。例如,它可以在FXML文件中声明为Label,但在Java代码中则是别的(在本例中为java.net.URL)。但是,正如您在下面的代码中看到的那样,我没有在任何地方使用URL类。

将fx:id更改为其他名称(例如loc)会使错误消失,因此location必须是一个“魔术”名称。

是什么原因造成的?

sample.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.Pane?>

<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
   <children>
      <Label fx:id="location" layoutX="133.0" layoutY="146.0" text="Output" />
   </children>
</Pane>
Run Code Online (Sandbox Code Playgroud)

Main.java

package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application
{

    @Override
    public void start(Stage primaryStage) throws Exception
    {
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        primaryStage.setTitle("Hello World");
        primaryStage.setScene(new Scene(root, 400, …
Run Code Online (Sandbox Code Playgroud)

java javafx fxml

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

Java程序组织:如何摆脱这种大规模的案例陈述?

我正在创建一个将填写给定语法的程序.现在我正在模拟像这样的"各种单词":

public class WordDescriptor {

    public static final String noun = "N";
    public static final String plural = "p";
    public static final String nounPhrase = "h";
    public static final String usuParticipleVerb = "V";
    public static final String transitiveVerb = "t";
    public static final String intransitiveVerb = "i";
    public static final String adjective = "A";
    public static final String adverb = "v";
    public static final String conjunction = "C";
    public static final String preposition = "P";
    public static final String interjection …
Run Code Online (Sandbox Code Playgroud)

java architecture oop switch-statement

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

当ArrayList调整自身大小时,它添加了多少个元素?

Java的ArrayList在需要时动态扩展自己.扩展发生时它会添加多少个元素?

它是否将旧数组复制到新数组中,还是以某种方式将两者连接在一起?

java arraylist

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

无法将ArrayList <subtype>转换为ArrayList <type>

我正在编写一个模拟人工神经网络的程序.我设置了以下类和接口:

public interface Neuron
{
}

// Input neuron
public class INeuron implements Neuron
{
}

// Output and hidden neuron
public class ONeuron implements Neuron
{
}

public interface Layer
{
    public ArrayList<Neuron> getNeurons();
}

// Input layer
public class ILayer implements Layer
{
    ArrayList<INeuron> neurons = new ArrayList<INeuron>();

    public ArrayList<Neuron> getNeurons()
    {
        return neurons;
    }

    // other stuff appropriate to the input layer
}
Run Code Online (Sandbox Code Playgroud)

编译器报告"无法从ArrayList <INeuron>转换为ArrayList <Neuron>".

我试过转换东西.例如:ArrayList<Neuron> neurons = new ArrayList<INeuron>().但这似乎只是将同样的错误转移到了班级的不同部分.

我不明白为什么INeuron不能被隐含地投射到Neuron,因为INeuron是神经元的一个子类型.

java arraylist type-conversion

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

关于Linux和开源的视频

我正在寻找一些关于Unix/Linux和开源软件历史的视频.我知道(并且有)Revolution OS.

还有其他人吗?

编辑:我是老师,需要资源来向学生展示.

编辑:我在Google Video上找到了Revolution OS .

unix linux video history open-source

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

CSS:class和id是否可以互换?

我知道其他人已经询问过如何在CSS文件中使用class和id,比如

Div:Class vs Id

所以我知道class和id之间的语义和语法差异:id应该用于只使用一次的元素,而class应该用于共享属性的元素.

但这不是一个严格的规则,是吗?将id用于多个元素有什么危害?或者只使用一个班级?毕竟,不是"一个元素"只是一个集合(类)只有一个东西吗?

如果我违反规则,浏览器的CSS解释器会抛出错误吗?我没见过它.

那么为什么我们同时拥有id和class?为什么不只是一个或另一个并称之为好?

css class

0
推荐指数
2
解决办法
1088
查看次数