我正在编写一个代码,它取两个点,确定两个点的大小,比较它们,并返回哪个更大。我有我的主类和方法来运行所有的东西,然后还有另一个类点来实现我的接口。但是,我无法使从接口调用的方法正常工作。我的代码是:
public class A7 {
public static void main(String[] args) {
Relatable p1 = new Point(1,2);
Relatable p2 = new Point(2,3);
System.out.println(p1.isLargerThan(p2));
}
}
class Point implements Relatable {
private int x;
private int y;
private Point p1;
private Point p2;
public Point() {
x = 0;
y = 0;
}
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public void setX(int x) {
this.x = x;
}
public void setY(int y) {
this.y = y;
}
public int getX() {
return this.x;
}
public int getY() {
return this.y;
}
public double getMagnitude() {
double magnitude = Math.sqrt(this.x * this.x + this.y * this.y);
return magnitude;
}
@Override
public int isLargerThan(Relatable other) {
if(p1.getMagnitude() > p2.getMagnitude()) {
return 1;
} else if(p1.getMagnitude() < p2.getMagnitude()) {
return -1;
} else {
return 0;
}
}
}
interface Relatable {
int isLargerThan(Relatable other);
}
当我尝试运行它时,我得到错误“exception in thread”main“java.lang.nullPointerException:不能调用”point.getMetality()“,因为”this.p1“是null”有人知道我可以解决这个问题的方法吗?
有这两个变量点p1和点P2是没有意义的。所以我删除了这2个变量,重写了代码。比较的重点在于比较在A7类的main方法中创建的两个对象,它们是相关的p1和相关的p2。因此,修改了方法的代码,以比较这两个对象(相关的p1和相关的p2),并在接口中添加了该方法。看一看
public class A7 {
public static void main(String[] args) {
Relatable p1 = new Point(1,2);
Relatable p2 = new Point(2,3);
System.out.println(p1.isLargerThan(p2));
}
}
class Point implements Relatable {
private int x;
private int y;
public Point() {
x = 0;
y = 0;
}
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public void setX(int x) {
this.x = x;
}
public void setY(int y) {
this.y = y;
}
public int getX() {
return this.x;
}
public int getY() {
return this.y;
}
public double getMagnitude() {
double magnitude = Math.sqrt(this.x * this.x + this.y * this.y);
return magnitude;
}
@Override
public int isLargerThan(Relatable other) {
if(this.getMagnitude() > other.getMagnitude()) {
return 1;
} else if(this.getMagnitude() < other.getMagnitude()) {
return -1;
} else {
return 0;
}
}
}
interface Relatable {
int isLargerThan(Relatable other);
double getMagnitude();
}
问题内容: 我试图将对象存储在redis中,redis是类的实例,因此具有功能,这是一个示例: 有没有一种方法可以将对象与函数一起存储在Redis中?我尝试过,但是只保留了属性。如何存储函数定义并能够执行以下操作: 打电话时如何获得? 先感谢您! 编辑 得到了修改MyClass.prototype并存储值的建议,但是类似这样的事情(setter / getter以外的功能)呢? 我正在尝试说明一个
本章节中,简述自定义类的创建和使用方法,供参考。 创建自定义类 用户可以定义自己的类,通过继承 ThingJS 内部类(比如:Thing 类),对 ThingJS 进行扩展和封装。 我们推荐使用 ES6 语法定义一个类。例如,自定义汽车类 Car。 // 继承 Thing 类 class Car extends THING.Thing { constructor(app) { super(
问题内容: 我解析了.yaml文件,需要以自定义方式解组其属性之一。我正在使用包裹。 有问题的属性按如下方式存储在我的.yaml文件中: 因此,它基本上是一种类型。 但是我需要在哪里定义为: 我的结构: 我试图像这样实现Unmarshaler接口: 我的问题是在函数内部未定义类型,从而在运行时导致nil指针异常。 我如何在此处正确实现Unmarshaler接口? 问题答案: 由于@Volker并未
问题内容: 假设我有一个文件一个简单的Python类定义myClass.py 而且我也有两个测试脚本。所述第一脚本创建类型测试的目的,填充阵列A,和泡菜的结果到一个文件。它立即从文件unpickles它并仍在填充阵列。第二脚本刚刚从文件unpickles,和 未填充的阵列(即A == [])。 为什么是这样? test1.py 和test2.py 问题答案: 这是因为你设置的一类属性,而不是一个实
自定义缓存类使用说明 phpGrace 1.2.1 版本新增了自定义缓存类的功能,您可以将某个相同类型的缓存封装为一个类文件,便于项目的复用 (: 实现步骤 在 phpGrace/caches/ 文件夹下创建您的自定义缓存类文件 文件命名规则 : 缓存类名称.php 类命名规则 : class 缓存类名称 extends \cacheBase{} 使用命名空间 : namespace phpG
问题内容: 两者之间有什么区别,哪个更好使用?为什么? 问题答案: 是interface,哪里是class,并且此类实现接口。 我希望使用第二种形式,这种形式更通用,即如果您不使用特定于方法的方法,则可以将其类型声明为接口类型。使用第二种形式,将实现从实现更改为实现接口的其他类将变得更加容易。 编辑: 由于许多SO用户都评论了这两种形式都可以是接受或的任何方法的参数。但是当我声明方法时,我更喜欢接