我刚刚看了一个名为“许多方法和实例”的 youtube 教程。他做了一个程序,你输入一些东西,上面写着“你的第一个女朋友是_ ”。但这太复杂了。首先是主类:
import java.util.Scanner;
public class MethodsInstances2 {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
MethodsInstances object = new MethodsInstances();
System.out.println("Enter name of first gf here: ");
String temp = input.nextLine();
object.setName(temp);
object.saying();
}
}
Run Code Online (Sandbox Code Playgroud)
接下来是它创建对象的类:
public class MethodsInstances {
private String girlName;
public void setName (String name){
girlName=name;
}
public String getName (){
return girlName;
}
public void saying(){
System.out.printf("Your first gf was %s", getName());
}
}
Run Code Online (Sandbox Code Playgroud)
考虑到我仍然是 Java 的新手,这似乎太复杂了,标题是我不明白的所有内容。这是我输入的速度提高了 4 倍的内容: …
我是 PHP 新手,所以这个问题似乎很愚蠢,但假设我将变量 ABC 赋值为 XYZ 类的新对象,那么我怎么能在 XYZ 的类定义中获得名称“ABC”?
$ABC = new XYZ;
$ABC->echoInstanceName(); //--I wish this line could echo out : ABC
Run Code Online (Sandbox Code Playgroud)
当实例分配给数组的元素时,这是否更容易?
$ABC = array('myElem'=>new XYZ);
$ABC['myElem']->echoInstanceName(); //--I wish this line could echo out : ABC
Run Code Online (Sandbox Code Playgroud)
所有建议表示赞赏!
更多信息:我正在做一些事情:建立一个动物系统。
从类 nativeAnimal 开始,扩展到猴子、大象、鱼...等。在运行时,我创建了一个 2 层数组,其中每个数组的元素都是 Monkey、Elephant 或 Fish 类型的实例......
我想要数组的键是动物的名字。在 Monkey 类中,我想要一个函数来回显 Monkey 的名字。当然,我可以以某种方式将数组的键传递给实例,但我想避免输入两次。(当我只更改一个名称时,这可能会导致错误)
这是不可能的吗?或者你能建议一个更好的模式吗?谢谢 !
我有以下错误:Cannot resolve keyword 'attrName1' into field. Choices are: codesectrepmodel, configCons, id。我的代码:
modelName1="ConfigConsModel"
model1 = get_model('actsInformationRetrieval', modelName1)
print "model attr", model1._meta.get_all_field_names() #displays ['codesectrepmodel', 'configCons', 'id']
print "attrName1", attrName1 #displays configCons
print "attr1", attr1 #displays ECOFIN
attr1Instance=model1.objects.get(attrName1=attr1)
Run Code Online (Sandbox Code Playgroud)
怎么了?我认为问题在于get_model返回模型类,而不是对象。对?
我希望这个程序要求用户输入,并创建一个名称等于用户输入的类实例。然后,createMember 类将创建一个文本文件,该文件将存储用户的所有数据。我该怎么做?
下面是主要方法:
public static void main(String[] args) {
String input = keyboard.nextLine();
input = new createMember(); // Error. can't do that for some reason?
}
}
Run Code Online (Sandbox Code Playgroud)
这是 createMember 类
public class createMember {
public void setMembership() {
Scanner keyboard = new Scanner(System.in);
out.println("Username: ");
String input = keyboard.nextLine();
try {
//Creates a text file with the same name as the username where data is stored.
Formatter x = new Formatter(input);
} catch (Exception e) {
out.println("Could not create username"); …Run Code Online (Sandbox Code Playgroud) 我是 C# 的新手,我有一个关于类实例的快速问题。有人告诉我,在类的实例上仅使用“null”不足以删除整个实例及其所有资源,例如指针等。所以我有:
ClassHere myClass = new ClassHere()和myClass = null
我真的必须考虑这个太难了......我将举一个例子来弄清楚GC是如何工作的。
假设我们有 3 个实例:x1、x2、x3。每个实例都将映射到一个变量:ClassHere myClass = new ClassHere()除非您拥有 x1、x2 和 x3 而不是 myClass。
然后说实例 x2 和 x3 对 x1 进行某种引用。假设 x1 在被 x2 和 x3 引用后什么也不做。GC 只会在 x2 之后拾取 x1,而 x3 对 x1 的引用将被删除,对吗?
如果它即使使用这些引用也能找到它。GC 如何知道我是否真的需要 x2 和 x3 引用的实例 x1 而不是删除它?
还是我在这里遗漏了什么?
当我看到“实例变量可以在使用之前或之后在类级别声明”时,我有一个问题。在网站java_variable_types
我不明白这个sequense是什么级别和含义。
JUnit 的 hamcrest 库中是否有等价物Assert#assertSame?如果是,那是什么?目前我只能想到Hamcrest#sameInstance但我不太确定这种方法是否适合使用。
我试图找出一种方法来安全地释放类获得的资源。我尝试使用finalize,但它不可靠。有时我在 GC 有机会释放资源之前关闭我的程序。
所以我决定在这样的块中使用类实例:
class Foo
def destroy # free resources
#...
end
#...
def self.create(*args)
instance = self.new(*args)
begin
yield instance
ensure
instance.destroy
end
end
Foo.create do |foo|
# use foo
end
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我仍然可以使用new我必须destroy明确创建的实例。我试图自己写,new但似乎默认情况下它只是超载了new。
有没有办法重新定义\禁用new?
我有一个名为 的实例welynxcore,我通过控制台 SSH 进入它没有问题。
我打开了 Cloud Shell 命令行,看看我是否可以从那里 ssh:
所以它不允许我这样做的错误:
ssh:无法解析主机名 welynxcore:名称或服务未知
我在这里缺少什么?是否允许在 Cloud Shell 中进行 ssh?以下是实例列表:
当我打开 Cloud Shell 时,我在哪个实例上?
xenonxie@cloudshell:~ (rock-perception-263016)$ hostname
cs-6000-devshell-vm-8e59d29e-e820-4b08-aea1-b04d4a597711
Run Code Online (Sandbox Code Playgroud)
cs-6000-devshell-vm-8e59d29e-e820-4b08-aea1-b04d4a597711指的是哪个实例?
提前感谢您的启发。
[更新]
从 VM 实例中,我看到该实例被授予了一个公共 ip 地址:34.67.190.134,在没有对默认安全设置进行任何更改的情况下,我尝试使用 Cloud Shell 通过 SSH 连接到它并收到以下消息:
xenonxie@cloudshell:~ (rock-perception-263016)$ ssh 34.67.190.134
Run Code Online (Sandbox Code Playgroud)
无法确定主机“34.67.190.134 (34.67.190.134)”的真实性。ECDSA 密钥指纹是 SHA256:mVzPEGPrWIuEXcojJTgwpinWO4eB2RwupWVA/Ix7Ko4。您确定要继续连接吗(是/否)?是 警告:将“34.67.190.134”(ECDSA)永久添加到已知主机列表中。权限被拒绝(公钥)。
似乎我需要将实例的公钥存储在分配给我的 GCP 帐户的“免费”默认虚拟机实例上?我对吗?公钥文件在哪里,是否有一种简单的方法来传输/导入该密钥?
非常感谢。
我使用的库包含某种对象类型LackingObject(某种类型),它缺少类型Ext(某种类型)的属性。如果我能够更改LackingObject类,我只需添加一个 type 属性Ext,但LackingObject不能更改,也不能扩展。我现在在语言中所做的C或者C++是创建一个Map映射LackingObjects到 的语言Exts,在 Java 中,它会(有点等效)看起来
Map<LackingObject, Ext> object_extension = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)
所以每当我LackingObject第一次在我的代码中遇到 a时,我可以调用
LackingObject o = ...;
Ext value = compute_value_for(o, ...);
object_extension.put(o, value);
Run Code Online (Sandbox Code Playgroud)
然后,为了回忆那个添加的属性,我会打电话
Ext resolved = object_extension.get(o);
Run Code Online (Sandbox Code Playgroud)
然而,这不起作用,因为默认HashMap行为是将Object::hashCode, not的结果映射Objects到值,所以如果我有两个(除了Ext值)equal LackingObjects,它们不能都是java.util.HashMap.
问题:在 Java 中,是否至少存在以下一项:
一种让标准库将对象实例映射到值的方法?
一种接收对象实例的唯一标识符的方法?
我发现一个 7 年前的帖子与这个主题有些相关,但我希望这些年来情况有所改变。
最后的方法是创建一个包装类,
class Wrapper{
LackingObject o; …Run Code Online (Sandbox Code Playgroud)